home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Online / RFCs / rfc / rfc1795.txt < prev    next >
Text File  |  1995-05-11  |  215KB  |  5,100 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                    L. Wells, Chair
  8. Request for Comments: 1795             Internetwork Technology Institute
  9. Obsoletes: 1434                                        A. Bartky, Editor
  10. Category: Informational                              Sync Research, Inc.
  11.                                                               April 1995
  12.  
  13.  
  14.              Data Link Switching: Switch-to-Switch Protocol
  15.        AIW DLSw RIG: DLSw Closed Pages, DLSw Standard Version 1.0
  16.  
  17. Status of this Memo
  18.  
  19.    This memo provides information for the Internet community.  This memo
  20.    does not specify an Internet standard of any kind.  Distribution of
  21.    this memo is unlimited.
  22.  
  23. Abstract
  24.  
  25.    This RFC describes use of Data Link Switching over TCP/IP. The RFC is
  26.    being distributed to members of the Internet community in order to
  27.    solicit their reactions to the proposals contained in it.  While the
  28.    issues discussed may not be directly relevant to the research
  29.    problems of the Internet, they may be interesting to a number of
  30.    researchers and Implementers.
  31.  
  32.    This RFC was created as a joint effort of the Advanced Peer-to-Peer
  33.    Networking (APPN) Implementers Workshop (AIW) Data Link Switching
  34.    (DLSw) Related Interest Group (RIG).  The APPN Implementers Workshop
  35.    is a group sponsored by IBM and consists of representatives of member
  36.    companies implementing current and future IBM Networking
  37.    interoperable products. The DLSw Related Interest Group was formed in
  38.    this forum in order to produce a single version of the Switch to
  39.    Switch Protocol (SSP) which could be implemented by all vendors,
  40.    which would fix documentation problems with the existing RFC 1434,
  41.    and which would enhance and evolve the protocol to add new functions
  42.    and features.
  43.  
  44.    This document is based on RFC 1434.  This document contains
  45.    significant changes to RFC 1434 and therefore obsoletes that
  46.    document.
  47.  
  48.    Any questions or comments relative to the contents of this RFC should
  49.    be sent to the following Internet address:
  50.    aiw-dlsw@networking.raleigh.ibm.com.
  51.  
  52.    NOTE 1: This is a widely subscribed mailing list and messages sent to
  53.    this address will be sent to all members of the DLSw mailing list.
  54.    For specific questions relating to subscribing to the AIW and any of
  55.  
  56.  
  57.  
  58. Wells & Bartky                                                  [Page 1]
  59.  
  60. RFC 1795                  Data Link Switching                 April 1995
  61.  
  62.  
  63.    it's working groups send email to: appn@vnet.ibm.com
  64.  
  65.    Information regarding all of the AIW working groups and the work they
  66.    are producing can be obtained by copying, via anonymous ftp, the file
  67.    aiwinfo.psbin or aiwinfo.txt from the Internet host
  68.    networking.raleigh.ibm.com, located in directory aiw.
  69.  
  70.    NOTE 2:  These mailing lists and addresses are subject to change.
  71.  
  72. 1.  Introduction
  73.  
  74.    Data Link Switching (DLSw) is a forwarding mechanism for the IBM SNA
  75.    (Systems Network Architecture) and IBM NetBIOS (Network Basic Input
  76.    Output Services) protocols.  This memo documents the Switch-to-Switch
  77.    Protocol (SSP) that is used between Data Link Switches.  This
  78.    protocol does not provide full routing, but instead provides
  79.    switching at the SNA Data Link layer (i.e., layer 2 in the SNA
  80.    architecture) and encapsulation in TCP/IP for transport over the
  81.    Internet.  This RFC documents the frame formats and protocols for
  82.    multiplexing data between Data Link Switches. The initial
  83.    implementation of SSP uses TCP as the reliable transport between Data
  84.    Link Switches.  However, other transport connections such as OSI TP4
  85.    could be used in the future.
  86.  
  87.    A Data Link Switch (abbreviated also as DLSw in this document) can
  88.    support  SNA (Physical Unit (PU) 2, PU 2.1 and PU 4) systems and
  89.    optionally NetBIOS systems attached to IEEE 802.2 compliant Local
  90.    Area Networks, as well as SNA (PU 2 (primary or secondary) and PU2.1)
  91.    systems attached to IBM Synchronous Data Link Control (SDLC) links.
  92.    For the latter case, the SDLC attached systems are provided with a
  93.    LAN appearance within the Data Link Switch (each SDLC PU is presented
  94.    to the SSP protocol as a unique MAC/SAP address pair).  For the
  95.    Token-Ring LAN attached systems, the Data Link Switch appears as a
  96.    source-routing bridge.  Token-Ring Remote systems that are accessed
  97.    through the Data Link Switch appear as systems attached to an
  98.    adjacent ring.  This ring is a virtual ring that is manifested within
  99.    each Data Link Switch.
  100.  
  101. 1.1  Backwards Compatibility with RFC 1434
  102.  
  103.    This document defines significant changes to RFC 1434 and does not
  104.    state details on how to interoperate with RFC 1434 or "enhanced"
  105.    implementations (e.g., those that added enter and exit busy flow
  106.    control).  It is up to the implementer to refer to RFC 1434 and/or
  107.    any other vendor's documentation in order to interoperate with a
  108.    given vendor's implementation, if interoperability with pre-AIW DLSw
  109.    RIG standards is desired.
  110.  
  111.  
  112.  
  113.  
  114. Wells & Bartky                                                  [Page 2]
  115.  
  116. RFC 1795                  Data Link Switching                 April 1995
  117.  
  118.  
  119. 2.  Overview
  120.  
  121.    Data Link Switching was developed to provide support for SNA and
  122.    NetBIOS in multi-protocol routers.  Since SNA and NetBIOS are
  123.    basically connection oriented protocols, the Data Link Control
  124.    procedure that they use on the LAN is IEEE 802.2 Logical Link Control
  125.    (LLC) Type 2.  Data Link Switching also accommodates SNA protocols
  126.    over WAN (Wide Area Network) links via the SDLC protocol.
  127.  
  128.    IEEE 802.2 LLC Type 2 was designed with the assumption that the
  129.    network transit delay would be predictable (i.e., a local LAN).
  130.    Therefore the LLC Type 2 elements of procedure use a fixed timer for
  131.    detecting lost frames.  When remote bridging is used over wide area
  132.    lines (especially at lower speeds), the network delay is larger and
  133.    it can vary greatly based upon congestion.  When the delay exceeds
  134.    the time-out value LLC Type 2 attempts to retransmit.  If the frame
  135.    is not actually lost, only delayed, it is possible for the LLC Type 2
  136.    procedures to become confused.  And as a result, the link may be
  137.    eventually taken down if the delay exceeds the T1 timer times N2
  138.    retry count.
  139.  
  140.    Given the use of LLC Type 2 services, Data Link Switching addresses
  141.    the following bridging problems:
  142.  
  143.              DLC Time-outs
  144.              DLC Acknowledgments over the WAN
  145.              Flow and Congestion Control
  146.              Broadcast Control of Search Packets
  147.              Source-Route Bridging Hop Count Limits
  148.  
  149.    NetBIOS also makes extensive use of datagram services that use
  150.    connectionless LLC Type 1 service.  In this case, Data Link Switching
  151.    addresses the last two problems in the above list.
  152.  
  153.    The principal difference between Data Link Switching and bridging is
  154.    that for connection-oriented data DLSw terminates the Data Link Control
  155.    whereas bridging does not. The following figure illustrates this
  156.    difference based upon two end systems operating with LLC Type 2
  157.    services.
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Wells & Bartky                                                  [Page 3]
  171.  
  172. RFC 1795                  Data Link Switching                 April 1995
  173.  
  174.  
  175.    Bridging
  176.    --------
  177.  
  178.                     Bridge           Bridge
  179.    +------+         +----+           +----+         +------+
  180.    | End  | +-----+ |    +-----/     |    | +-----+ | End  |
  181.    |System+-+ LAN +-+    |    /------+    +-+ LAN +-+System|
  182.    |      | +-----+ |    |  TCP/IP   |    | +-----+ |      |
  183.    +------+         +----+           +----+         +------+
  184.       Info----------------------------------------------->
  185.           <-----------------------------------------------RR
  186.  
  187.  
  188.    Data Link Switching
  189.    -------------------
  190.  
  191.    +------+         +----+           +----+         +------+
  192.    | End  | +-----+ |    +-----/     |    | +-----+ | End  |
  193.    |System+-+ LAN +-+DLSw|    /------+DLSw+-+ LAN +-+System|
  194.    |      | +-----+ |    |  TCP/IP   |    | +-----+ |      |
  195.    +------+         +----+           +----+         +------+
  196.     Info--------------->   -------------> Info
  197.       <---------------RR                 ------------>
  198.                                          <------------RR
  199.  
  200.    In traditional bridging, the Data Link Control is end-to-end.  Data
  201.    Link Switching terminates the LLC Type 2 connection at the switch.
  202.    This means that the LLC Type 2 connections do not cross the wide area
  203.    network.  The DLSw multiplexes LLC connections onto a TCP connection
  204.    to another DLSw.  Therefore, the LLC connections at each end are
  205.    totally independent of each other.  It is the responsibility of the
  206.    Data Link Switch to deliver frames that it has received from a LLC
  207.    connection to the other end.  TCP is used between the Data Link
  208.    Switches to guarantee delivery of frames.
  209.  
  210.    As a result of this design, LLC time-outs are limited to the local
  211.    LAN (i.e., they do not traverse the wide area).  Also, the LLC Type 2
  212.    acknowledgments (RR's) do not traverse the WAN, thereby reducing
  213.    traffic across the wide area links.  For SDLC links, polling and poll
  214.    response occurs locally, not over the WAN.  Broadcast of search
  215.    frames is controlled by the Data Link Switches once the location of a
  216.    target system is discovered.  Finally, the switches can now apply
  217.    back pressure to the end systems to provide flow and congestion
  218.    control.
  219.  
  220.    Only one copy of an Link Protocol Data Unit (LPDU) is sent between
  221.    Data Link Switches in SSP messages (XIDFRAME and INFOFRAME).  Retries
  222.    of the LPDU are absorbed by Data Link Switch that receives it.  The
  223.  
  224.  
  225.  
  226. Wells & Bartky                                                  [Page 4]
  227.  
  228. RFC 1795                  Data Link Switching                 April 1995
  229.  
  230.  
  231.    Data Link Switch that transmits the LPDU received in an SSP message
  232.    to a local DLC, will perform retries in a manner appropriate for the
  233.    local DLC. This may involve running a reply timer and maintaining a
  234.    poll retry count.  The length of the timer and the number of retries
  235.    is an implementation choice based on user configuration parameters
  236.    and the DLC type.
  237.  
  238.    Data Link Switching uses LAN addressing to set up connections between
  239.    SNA systems.  SDLC attached devices are defined with MAC and SAP
  240.    addresses to enable them to communicate with LAN attached devices.
  241.    For NetBIOS systems, Data Link Switching uses the NetBIOS name to
  242.    forward datagrams and to set up connections for NetBIOS sessions.
  243.    For LLC type 2 connection establishment, SNA systems send TEST (or in
  244.    some cases, XID) frames to the null (0x00) SAP.  NetBIOS systems have
  245.    an address resolution procedure, based upon the Name Query and Name
  246.    Recognized frames, that is used to establish an end-to-end circuit.
  247.  
  248.    Since Data Link Switching may be implemented in multi-protocol
  249.    routers, there may be situations where both bridging and switching
  250.    are enabled. SNA frames can be identified by their link SAP.  Typical
  251.    SAP values for SNA are 0x04, 0x08, and 0x0C.  NetBIOS always uses a
  252.    link SAP value of 0xF0.
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Wells & Bartky                                                  [Page 5]
  283.  
  284. RFC 1795                  Data Link Switching                 April 1995
  285.  
  286.  
  287. 3.  Transport Connection
  288.  
  289.    Data Link Switches can be in used in pairs or by themselves.
  290.  
  291.    A Single DLSw internally switches one data link to another without
  292.    using TCP (DLC(1) to DLC(2) in the figure below).  This RFC does not
  293.    go into details on how to implement this feature and it is not a
  294.    requirement to support this RFC.
  295.  
  296.    A paired DLSw multiplexes data links over a reliable transport using
  297.    a Switch-to-Switch Protocol (SSP).
  298.  
  299.    +-------------------------------------------+Switch-to-Switch
  300.    |              DLC Interfaces               | Protocol (SSP)
  301.    |+-----------+   DLC Request  +-----------+ |
  302.    ||   Data    |<---------------|           | |Send SSP Frame
  303.    ||   Link    | DLC Indication |           | |-------------->
  304.    || Control 1 |--------------->|           | |
  305.    |+-----------+                | Data Link | |
  306.    |+-----------+   DLC Request  |  Switch   | |
  307.    ||   Data    |<-------------- |           | |Rec. SSP Frame
  308.    ||   Link    | DLC Indication |           | |<-------------
  309.    || Control 2 | -------------->|           | |
  310.    |+-----------+                +-----------+ |
  311.    |            Multi-Protocol Router          |
  312.    +-------------------------------------------+
  313.  
  314.    Before Data Link Switching can occur between two routers, they must
  315.    establish two TCP connections between them.  Each Data Link Switch
  316.    will maintain a list of DLSw capable routers and their status
  317.    (active/inactive).  After the TCP connection is established, SSP
  318.    messages are exchanged to establish the capabilities of the two Data
  319.    Link Switches.  Once the exchange is complete,  the DLSw will employ
  320.    SSP control messages to establish end-to-end circuits over the
  321.    transport connection.  Within the transport connection, DLSw SSP
  322.    messages are exchanged.  The message formats and types for these SSP
  323.    messages are documented in the following sections.
  324.  
  325.    The default parameters associated with the TCP connections between
  326.    Data Link Switches are as follows:
  327.  
  328.    Socket Family     AF_INET        (Internet protocols)
  329.    Socket Type       SOCK_STREAM    (stream socket)
  330.    Read Port Number  2065
  331.    Write Port Number 2067
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Wells & Bartky                                                  [Page 6]
  339.  
  340. RFC 1795                  Data Link Switching                 April 1995
  341.  
  342.  
  343.    Two or more Data Link Switches may be attached to the same LAN,
  344.    consisting of a number of token-ring segments interconnected by
  345.    source-routing bridges.  In this case, a TCP connection is not
  346.    defined between bridges attached to the same LAN.  This will allow
  347.    using systems to select one of the possible Data Link Switches in a
  348.    similar manner to the selection of a bridge path through a source-
  349.    routed bridged network.  The virtual ring segment in each Data Link
  350.    Switch attached to a common LAN must be configured with the same ring
  351.    number.  This will prevent LAN frames sent by one Data Link Switch
  352.    from being propagated through the other Data Link Switches.
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Wells & Bartky                                                  [Page 7]
  395.  
  396. RFC 1795                  Data Link Switching                 April 1995
  397.  
  398.  
  399. 3.1  SSP Frame Formats
  400.  
  401.    The following diagrams show the two message header formats exchanged
  402.    between Data Link Switches, Control and Information.  The Control
  403.    message header is used for all messages except Information Frames
  404.    (INFOFRAME) and Independent Flow Control Messages (IFCM), which are
  405.    sent in Information header format.  The INFOFRAME, KEEPALIVE and IFCM
  406.    message headers are 16 bytes long, and the control message header is
  407.    72 bytes long.  The fields in the first sixteen bytes of all message
  408.    headers are the same.
  409.  
  410.     CONTROL MESSAGES (72 Bytes)
  411.     (zero based offsets below shown in decimal (xx) )
  412.    +-----------------------------+-----------------------------+
  413.    | (00) Version Number         | (01) Header Length (= 72)   |
  414.    +-----------------------------+-----------------------------+
  415.    | (02) Message Length                                       |
  416.    +-----------------------------+-----------------------------+
  417.    | (04) Remote Data Link Correlator                          |
  418.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  419.    |                                                           |
  420.    +-----------------------------+-----------------------------+
  421.    | (08) Remote DLC Port ID                                   |
  422.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  423.    |                                                           |
  424.    +-----------------------------+-----------------------------+
  425.    | (12) Reserved Field                                       |
  426.    +-----------------------------+-----------------------------+
  427.    | (14) Message Type           | (15) Flow Control Byte      |
  428.    +-----------------------------+-----------------------------+
  429.    | (16) Protocol ID            | (17) Header Number          |
  430.    +-----------------------------+-----------------------------+
  431.    | (18) Reserved                                             |
  432.    +-----------------------------+-----------------------------+
  433.    | (20) Largest Frame Size     | (21) SSP Flags              |
  434.    +-----------------------------+-----------------------------+
  435.    | (22) Circuit Priority       | (23) Message Type (see note)|
  436.    +-----------------------------+-----------------------------+
  437.    | (24) Target MAC Address  (non-canonical format)           |
  438.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -|
  439.    |                                                           |
  440.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  441.    |                                                           |
  442.    +-----------------------------+-----------------------------+
  443.    | (30) Origin MAC Address  (non-canonical format)           |
  444.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -|
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Wells & Bartky                                                  [Page 8]
  451.  
  452. RFC 1795                  Data Link Switching                 April 1995
  453.  
  454.  
  455.    |                                                           |
  456.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  457.    |            .                              .               |
  458.    +-----------------------------+-----------------------------+
  459.    | (36) Origin Link SAP        | (37) Target Link SAP        |
  460.    +-----------------------------+-----------------------------+
  461.    | (38) Frame Direction        | (39) Reserved               |
  462.    +-----------------------------+-----------------------------+
  463.    | (40) Reserved                                             |
  464.    +-----------------------------+-----------------------------+
  465.    | (42) DLC Header Length                                    |
  466.    +-----------------------------+-----------------------------+
  467.    | (44) Origin DLC Port ID                                   |
  468.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  469.    |                                                           |
  470.    +-----------------------------+-----------------------------+
  471.    | (48) Origin Data Link Correlator                          |
  472.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  473.    |                                                           |
  474.    +-----------------------------+-----------------------------+
  475.    | (52) Origin Transport ID                                  |
  476.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  477.    |                                                           |
  478.    +-----------------------------+-----------------------------+
  479.    | (56) Target DLC Port ID                                   |
  480.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  481.    |                                                           |
  482.    +-----------------------------+-----------------------------+
  483.    | (60) Target Data Link Correlator                          |
  484.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  485.    |                                                           |
  486.    +-----------------------------+-----------------------------+
  487.    | (64) Target Transport ID                                  |
  488.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  489.    |                                                           |
  490.    +-----------------------------+-----------------------------+
  491.    | (68) Reserved Field                                       |
  492.    +-----------------------------+-----------------------------+
  493.    | (70) Reserved Field                                       |
  494.    +-----------------------------+-----------------------------+
  495.             (Even Byte)                     (Odd Byte)
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Wells & Bartky                                                  [Page 9]
  507.  
  508. RFC 1795                  Data Link Switching                 April 1995
  509.  
  510.  
  511.     INFORMATION MESSAGE (16 Bytes)
  512.    +-----------------------------+-----------------------------+
  513.    | (00) Version Number         | (01) Header Length (= 16)   |
  514.    +-----------------------------+-----------------------------+
  515.    | (02) Message Length                                       |
  516.    +-----------------------------+-----------------------------+
  517.    | (04) Remote Data Link Correlator                          |
  518.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  519.    |                                                           |
  520.    +-----------------------------+-----------------------------+
  521.    | (08) Remote DLC Port ID                                   |
  522.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  523.    |                                                           |
  524.    +-----------------------------+-----------------------------+
  525.    | (12) Reserved Field                                       |
  526.    +-----------------------------+-----------------------------+
  527.    | (14) Message Type           | (15) Flow Control Byte      |
  528.    +-----------------------------+-----------------------------+
  529.             (Even Byte)                    (Odd Byte)
  530.  
  531.    The first sixteen bytes of control and information message headers
  532.    contain identical fields.  A brief description of some of the fields
  533.    in an SSP message are shown below (if not defined below, the fields
  534.    and/or their values are described in subsequent sections).
  535.  
  536.    The Version Number field (offset 0) is set to 0x31 (ASCII '1'),
  537.    indicating a decimal value of 49.  This is used to indicate DLSw
  538.    version 1.
  539.  
  540.    The Header Length field (offset 1) is 0x48 for control messages,
  541.    indicating a decimal value of 72 bytes, and 0x10 for information and
  542.    Independent Flow Control messages, indicating a decimal value of 16
  543.    bytes.
  544.  
  545.    The Message Length field (offset 2) defines the number of bytes
  546.    within the data field following the header.
  547.  
  548.    The Flow Control Byte field (offset 15)  is described in section 8.
  549.  
  550.    The Header Number field (offset 17) is 0x01, indicating a value of
  551.    one.
  552.  
  553.    The Circuit Priority field (offset 22) is described in section 4.
  554.  
  555.    The Frame Direction field (offset 38) is set to 0x01 for frames sent
  556.    from the origin DLSw to the target DLSw, and is set to 0x02 for
  557.    frames sent from the target DLSw to the origin DLSw.
  558.  
  559.  
  560.  
  561.  
  562. Wells & Bartky                                                 [Page 10]
  563.  
  564. RFC 1795                  Data Link Switching                 April 1995
  565.  
  566.  
  567.    Note:  The Remote Data Link Correlator and Remote DLC Port ID are set
  568.    equal to the Target Data Link Correlator and Target DLC Port ID if
  569.    the Frame Direction field is set to 0x01, and are set equal to the
  570.    Origin Data Link Correlator and Origin DLC Port ID if the Direction
  571.    Field is set to 0x02.
  572.  
  573.    The Protocol ID field is set to 0x42, indicating a decimal value of
  574.    66.
  575.  
  576.    The DLC Header Length is set to zero for SNA and is set to 0x23 for
  577.    NetBIOS datagrams, indicating a length of 35 bytes.  This includes
  578.    the Access Control (AC) field, the Frame Control (FC) field,
  579.    Destination MAC Address (DA), the Source MAC Address (SA), the
  580.    Routing Information (RI) field (padded to 18 bytes), the Destination
  581.    link SAP (DSAP), the Source link SAP (SSAP), and the LLC control
  582.    field (UI).
  583.  
  584.    NOTE:  The values for the Message Type field are defined in section
  585.    3.5. Note that this value is specified in two different fields
  586.    (offset 14 and 23 decimal) of the control message header.  Only the
  587.    first field is to be used when parsing a received SSP message.  The
  588.    second field is to be ignored by new implementations on reception.
  589.    The second field was left in for backwards compatibility with RFC
  590.    1434 implementations and this field may be used in future versions if
  591.    needed.
  592.  
  593.    The SSP Flags field contains additional information related to the
  594.    SSP message.  The flags are defined as follows (bit 7 being the most
  595.    significant bit and bit 0 the least significant bit of the octet):
  596.  
  597.    Bit(s)
  598.    76543210    Name    Meaning
  599.    ---------   -----   -------
  600.    x.......    SSPex   1 = explorer message (CANUREACH and ICANREACH)
  601.  
  602.    Reserved fields are set to zero upon transmission and should be
  603.    ignored upon receipt.
  604.  
  605. 3.2  Address Parameters
  606.  
  607.    A data link is defined as a logical association between the two end
  608.    stations using Data Link Switching.  It is identified by a Data Link
  609.    ID (14 bytes) consisting of the pair of attachment addresses
  610.    associated with each end system.  Each attachment address is
  611.    represented by the concatenation of the MAC address (6 bytes) and the
  612.    LLC address (1 byte).  Each attachment address is classified as
  613.    either "Target" in the context of the Destination MAC/SAP addresses
  614.    of an explorer frame sent in the first frame used to establish a
  615.  
  616.  
  617.  
  618. Wells & Bartky                                                 [Page 11]
  619.  
  620. RFC 1795                  Data Link Switching                 April 1995
  621.  
  622.  
  623.    circuit, or "Origin" in the context of the Source MAC/SAP addresses.
  624.    All MAC addresses are expressed in non-canonical (Token-Ring) format.
  625.  
  626.     DATA LINK ID  (14 Bytes @ Control message offset 24 decimal)
  627.    +-----------------------------+-----------------------------+
  628.    | Target MAC Address                                        |
  629.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  630.    |                                                           |
  631.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  632.    |                                                           |
  633.    +-----------------------------+-----------------------------+
  634.    | Origin MAC Address                                        |
  635.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  636.    |                                                           |
  637.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  638.    |                                                           |
  639.    +-----------------------------+-----------------------------+
  640.    | Origin Link SAP             | Target Link SAP             |
  641.    +-----------------------------+-----------------------------+
  642.  
  643.  
  644.    An end-to-end circuit is identified by a pair of Circuit ID's.  A
  645.    Circuit ID is a 64 bit number that identifies the DLC circuit within
  646.    a single DLSw.  It consists of a DLC Port ID (4 bytes), and a Data
  647.    Link Correlator (4 bytes).  The Circuit ID must be unique in a single
  648.    DLSw and is assigned locally.  The pair of Circuit ID's along with
  649.    the Data Link IDs,  uniquely identify a single end-to-end circuit.
  650.    Each DLSw must keep a table of these Circuit ID pairs, one for the
  651.    local end of the circuit and the other for the remote end of the
  652.    circuit.  In order to identify which Data Link Switch originated the
  653.    establishment of a circuit, the terms, "Origin" DLSw and "Target"
  654.    DLSw, will be employed in this document.
  655.  
  656.     CIRCUIT ID   (8 Bytes)
  657.    +-----------------------------+-----------------------------+
  658.    | DLC Port ID                                               |
  659.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  660.    |                                                           |
  661.    +-----------------------------+-----------------------------+
  662.    | Data Link Correlator                                      |
  663.    +- - - - - - - - - - - - - - -+- - - - - - - - - - - - - - -+
  664.    |                                                           |
  665.    +-----------------------------+-----------------------------+
  666.  
  667.    The Origin Transport ID and the Target Transport ID fields in the
  668.    message header are used to identify the individual TCP/IP port on a
  669.    Data Link Switch.  The values have only local significance.  However,
  670.    each Data Link Switch is required to reflect the values contained in
  671.  
  672.  
  673.  
  674. Wells & Bartky                                                 [Page 12]
  675.  
  676. RFC 1795                  Data Link Switching                 April 1995
  677.  
  678.  
  679.    these two fields, along with the associated values for DLC Port ID
  680.    and the Data Link Correlator, when returning a message to the other
  681.    Data Link Switch.
  682.  
  683.    The following figure shows the use of the addressing parameters
  684.    during the establishment of an end-to-end connection.  The CANUREACH,
  685.    ICANREACH, and REACH_ACK message types all carry the Data Link ID,
  686.    consisting of the MAC and Link SAP addresses associated with the two
  687.    end stations.  The CANUREACH and ICANREACH messages are qualified by
  688.    the SSPex flag into CANUREACH_ex, ICANREACH_ex (explorer messages)
  689.    and CANUREACH_cs, ICANREACH_cs (circuit start).  The CANUREACH_ex is
  690.    used to find a remote MAC and Link SAP address without establishing
  691.    an SSP circuit.  Upon receipt of a CANUREACH_cs message, the target
  692.    DLSw starts a data link for each port, thereby obtaining a Data Link
  693.    Correlator.  If the target station can be reached, an ICANREACH_cs
  694.    message is returned to the origin DLSw containing the Target Circuit
  695.    ID parameter.  Upon receipt, the origin DLSw starts a data link and
  696.    returns the Origin Circuit ID to the target DLSw within the REACH_ACK
  697.    message.  (Note for a full list of message types, see section 3.5.)
  698.  
  699.    +------------+                                +------------+
  700.    |Disconnected|                                |Disconnected|
  701.    +------------+   CANUREACH_cs (Data Link ID)  +------------+
  702.        ------------------------------------------------->
  703.          ICANREACH_cs (Data Link ID, Target Circuit ID)
  704.        <------------------------------------------------
  705.      REACH_ACK (Data Link ID, Origin Cir ID, Target Cir ID)
  706.        ------------------------------------------------->
  707.    +------------+                                +------------+
  708.    |Circuit Est.|                                |Circuit Est.|
  709.    +------------+                                +------------+
  710.      XIDFRAME (Data Link ID, Origin Cir ID, Target Cir ID)
  711.        <------------------------------------------------>
  712.       CONTACT (Data Link ID, Origin Cir ID, Target Cir ID)
  713.        ------------------------------------------------->
  714.      CONTACTED (Data Link ID, Origin Cir ID, Target Cir ID)
  715.        <-------------------------------------------------
  716.    +------------+                                +------------+
  717.    | Connected  |                                | Connected  |
  718.    +------------+                                +------------+
  719.         INFOFRAME (Remote Circuit ID = Target Circuit ID)
  720.        ------------------------------------------------->
  721.         INFOFRAME (Remote Circuit ID = Origin Circuit ID)
  722.        <-------------------------------------------------
  723.  
  724.    During the exchange of the XIDFRAME, CONTACT, and CONTACTED messages,
  725.    the pair of Circuit ID parameters is included in the message format
  726.    along with the DATA LINK ID parameter.  Once the connection has been
  727.  
  728.  
  729.  
  730. Wells & Bartky                                                 [Page 13]
  731.  
  732. RFC 1795                  Data Link Switching                 April 1995
  733.  
  734.  
  735.    established, the INFOFRAME messages are exchanged with the shorter
  736.    header.  This header contains only the Circuit ID associated with the
  737.    remote DLSw.  The Remote Data Link Correlator and the Remote DLC Port
  738.    ID are set equal to the Data Link Correlator and the DLC Port ID that
  739.    are associated with the origin or target Data Link Switch, dependent
  740.    upon the direction of the packet.
  741.  
  742. 3.3  Correlators
  743.  
  744.    The local use, and contents of the Data Link Correlator, Port ID and
  745.    Transport ID fields in SSP messages is an implementation choice.
  746.    These fields have local significance only.  The values received from
  747.    a partner DLSw must not be interpreted by the DLSw that receives them
  748.    and should be echoed "as is" to a partner DLSw in subsequent
  749.    messages.  All implementations must obey the following rules in this
  750.    section (3.3) on the assignment and fixing of these correlator fields
  751.    for each transport connection or circuit:
  752.  
  753.    The Transport ID fields are learned from the first SSP message
  754.    exchanged with a DLSw partner (the Capabilities exchange).  This
  755.    field should not be varied by a DLSw after the capabilities exchange
  756.    and must be reflected to the partner DLSw in every SSP control
  757.    message.
  758.  
  759.    The Target Data Link Correlator, Target Port ID and Target Transport
  760.    ID must remain the same once the Target DLSw has sent the
  761.    ICANREACH_cs for a given circuit.  The Origin DLSw must store the
  762.    values specified in the ICANREACH_cs and use these on all subsequent
  763.    SSP messages for this circuit.
  764.  
  765.    The Origin DLSw must allow these fields to vary until the
  766.    ICANREACH_cs is received.  Each SSP message issued for a circuit must
  767.    reflect the values specified by the Target DLSw in the last SSP
  768.    message for this circuit received by the Origin DLSw.  Binary zero
  769.    should be used if no such message has yet been received for a given
  770.    circuit (apart from the Target Transport ID which will have been
  771.    learnt as specified above).
  772.  
  773.    The Origin Data Link Correlator, Origin Port ID and Origin Transport
  774.    ID must remain the same once the Origin DLSw has issued the REACH_ACK
  775.    for a given circuit.  The Target DLSw must store the values specified
  776.    in the REACH_ACK and use these on all subsequent SSP messages for
  777.    this circuit.
  778.  
  779.    The Target DLSw must allow these fields to vary until the REACH_ACK
  780.    is received.  Each SSP message issued for a circuit must reflect the
  781.    values specified by the Origin DLSw in the last SSP message for this
  782.    circuit received by the Target DLSw.  Binary zero should be used if
  783.  
  784.  
  785.  
  786. Wells & Bartky                                                 [Page 14]
  787.  
  788. RFC 1795                  Data Link Switching                 April 1995
  789.  
  790.  
  791.    no such message has yet been received for a given circuit (apart from
  792.    the Origin Transport ID which will have been learnt as specified
  793.    above).
  794.  
  795.    For the purposes of correlator exchange, explorer messages form a
  796.    separate circuit.  Both DLSw partners must reflect the last received
  797.    correlator values as specified above.  However correlators learned on
  798.    explorer messages need not be carried over to a subsequent circuit
  799.    setup attempt.  In particular, the Origin DLSw may elect to use the
  800.    same values for the Origin Data Link Correlator and Origin Port ID
  801.    when it issues a CANUREACH_cs after receiving an ICANREACH_ex or
  802.    NETBIOS_NR_ex. However the Target DLSw must not assume that the
  803.    CANUREACH_cs will specify any of the Target Data Link Correlator or
  804.    Target Port ID that were exchanged on the explorer messages.
  805.  
  806.    Received SSP messages that require a valid Remote Circuit ID but
  807.    cannot be associated with an existing circuit should be rejected with
  808.    a HALT_DL_NOACK message.  This is done to prevent a situation where
  809.    one DLSw partner has a circuit defined while the other partner does
  810.    not. The exception would be a HALT_DL_NOACK message with an invalid
  811.    Remote Circuit ID.  The HALT_DL_NOACK message is typically used in
  812.    error situations where a response is not appropriate.
  813.  
  814.    The SSP messages requiring a valid Remote Circuit ID are all messages
  815.    except the following: CANUREACH_ex, CANUREACH_cs, ICANREACH_ex,
  816.    ICANREACH_cs, NETBIOS_NQ_cs, NETBIOS_NR_cs, DATAFRAME, NETBIOS_ANQ,
  817.    NETBIOS_ANR, KEEPALIVE and CAP_EXCHANGE.
  818.  
  819. 3.4  Largest Frame Size Field
  820.  
  821.    The Largest Frame Size (LF Size) field in the SSP Control Header is
  822.    used to carry the LF Size bits across the DLSw connection.  This
  823.    should be used to ensure that the two end-stations always negotiate a
  824.    frame size to be used on a circuit that does not require the Origin
  825.    and Target DLSw partners to re-segment frames.
  826.  
  827.    This field is valid on CANUREACH_ex, CANUREACH_cs, ICANREACH_ex,
  828.    ICANREACH_cs, NETBIOS_NQ_ex and NETBIOS_NR_ex messages only. The
  829.    contents of this field should be ignored on all other frames.
  830.  
  831.    Every DLSw forwarding a SSP frame to its DLSw partner must ensure
  832.    that the contents of this frame reflect the minimum capability of the
  833.    route to its local end-station or any limit imposed by the DLSw
  834.    itself.
  835.  
  836.    The bit-wise definition of this field is as follows (bit 7 is the
  837.    most significant bit, bit 0 is the least significant bit):
  838.  
  839.  
  840.  
  841.  
  842. Wells & Bartky                                                 [Page 15]
  843.  
  844. RFC 1795                  Data Link Switching                 April 1995
  845.  
  846.  
  847.      7   6   5   4   3   2   1   0
  848.    +-------------------------------+
  849.    | c | r | b | b | b | e | e | e |
  850.    +-------------------------------+
  851.  
  852.      c   .   .   .   .   .   .   .  LF Size Control flag
  853.                                     (significant on messages
  854.                                     from Origin to Target
  855.                                     DLSw only)
  856.  
  857.                                     0=fail circuit if route
  858.                                       obtained requires a
  859.                                       smaller LF size
  860.                                     1=don't fail the circuit
  861.                                       but return the LF size
  862.                                       obtained even if it is
  863.                                       smaller
  864.  
  865.      .   r   .   .   .   .   .   .  Reserved
  866.      .   .   b   .   .   .   .   .  Largest Frame Bit Base
  867.      .   .   .   b   .   .   .   .  Largest Frame Bit Base
  868.      .   .   .   .   b   .   .   .  Largest Frame Bit Base
  869.      .   .   .   .   .   e   .   .  Largest Frame Bit Extended
  870.      .   .   .   .   .   .   e   .  Largest Frame Bit Extended
  871.      .   .   .   .   .   .   .   e  Largest Frame Bit Extended
  872.  
  873.              <----- LF Bits ----->
  874.  
  875.    Refer to IEEE 802.1D Standard, Annex C for encoding of Largest Frame
  876.    base and extended bit values.
  877.  
  878.    The Origin DLSw "Size Control" flag informs a Target DLSw that
  879.    chooses to reply to *_cs messages on the basis of cached information
  880.    that it may safely return a smaller LF Size on the ICANREACH_cs frame
  881.    if it has had to choose an alternative route on which to initialize
  882.    the circuit.  If this bit is set to 1, the Origin DLSw takes
  883.    responsibility for ensuring that the end-stations negotiate a
  884.    suitable frame size for the circuit. If this bit is set to 0, the
  885.    Target DLSw must not reply to the CANUREACH_cs if it cannot obtain a
  886.    route to the Target end station that support an LF Size at least as
  887.    large as that specified in the CANUREACH_cs frame.
  888.  
  889. 3.5  Message Types
  890.  
  891.    The following table lists the protocol data units that are exchanged
  892.    between Data Link Switches.  All values not listed are reserved for
  893.    potential use in follow-on releases.
  894.  
  895.  
  896.  
  897.  
  898. Wells & Bartky                                                 [Page 16]
  899.  
  900. RFC 1795                  Data Link Switching                 April 1995
  901.  
  902.  
  903.    Command          Description                       Type   flags/notes
  904.    -------          --------                         ------  -----------
  905.    CANUREACH_ex     Can U Reach Station-explorer      0x03   SSPex
  906.    CANUREACH_cs     Can U Reach Station-circuit start 0x03
  907.    ICANREACH_ex     I Can Reach Station-explorer      0x04   SSPex
  908.    ICANREACH_cs     I Can Reach Station-circuit start 0x04
  909.    REACH_ACK        Reach Acknowledgment              0x05
  910.    DGRMFRAME        Datagram Frame                    0x06   (note 1)
  911.    XIDFRAME         XID Frame                         0x07
  912.    CONTACT          Contact Remote Station            0x08
  913.    CONTACTED        Remote Station Contacted          0x09
  914.    RESTART_DL       Restart Data Link                 0x10
  915.    DL_RESTARTED     Data Link Restarted               0x11
  916.    ENTER_BUSY       Enter Busy                        0x0C   (note 2)
  917.    EXIT_BUSY        Exit Busy                         0x0D   (note 2)
  918.    INFOFRAME        Information (I) Frame             0x0A
  919.    HALT_DL          Halt Data Link                    0x0E
  920.    DL_HALTED        Data Link Halted                  0x0F
  921.    NETBIOS_NQ_ex    NETBIOS Name Query-explorer       0x12   SSPex
  922.    NETBIOS_NQ_cs    NETBIOS Name Query-circuit setup  0x12   (note 3)
  923.    NETBIOS_NR_ex    NETBIOS Name Recognized-explorer  0x13   SSPex
  924.    NETBIOS_NR_cs    NETBIOS Name Recog-circuit setup  0x13   (note 3)
  925.    DATAFRAME        Data Frame                        0x14   (note 1)
  926.    HALT_DL_NOACK    Halt Data Link with no Ack        0x19
  927.    NETBIOS_ANQ      NETBIOS Add Name Query            0x1A
  928.    NETBIOS_ANR      NETBIOS Add Name Response         0x1B
  929.    KEEPALIVE        Transport Keepalive Message       0x1D   (note 4)
  930.    CAP_EXCHANGE     Capabilities Exchange             0x20
  931.    IFCM             Independent Flow Control Message  0x21
  932.    TEST_CIRCUIT_REQ Test Circuit Request              0x7A
  933.    TEST_CIRCUIT_RSP Test Circuit Response             0x7B
  934.  
  935.    Note 1: Both the DGRMFRAME and DATAFRAME messages are used to carry
  936.    information received by the DLC entity within UI frames.  The
  937.    DGRMFRAME message is addressed according to a pair of Circuit IDs,
  938.    while the DATAFRAME message is addressed according to a Data Link ID,
  939.    being composed of a pair of MAC addresses and a pair of link SAP
  940.    addresses. The latter is employed prior to the establishment of an
  941.    end-to-end circuit when Circuit IDs have yet to be established or
  942.    during circuit restart when Data Links are reset.
  943.  
  944.    Note 2: These messages are not used for the DLSw Standard but may be
  945.    used by older DLSw implementations.  They are listed here for
  946.    informational purposes.  These messages were added after publication
  947.    of RFC 1434 and were deleted in this standard (adaptive pacing is now
  948.    used instead).
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Wells & Bartky                                                 [Page 17]
  955.  
  956. RFC 1795                  Data Link Switching                 April 1995
  957.  
  958.  
  959.    Note 3: These messages are not normally issued by a Standard DLSw,
  960.    which uses the NB_*_ex messages as shown in section 5.4.  However if
  961.    a Standard DLSw attempts to interoperate with older DLSw
  962.    implementations, these messages correspond to the NETBIOS_NQ and
  963.    NETBIOS_NR messages used in RFC1434 both to locate the resource and
  964.    to setup a circuit.  This document does not attempt to provide a
  965.    complete specification of the use of these messages.
  966.  
  967.    Note 4:  A KEEPALIVE message may be sent by a DLSw to a partner DLSw
  968.    in order to verify the TCP connection (or other future SSP carrying
  969.    protocol) is still functioning.  If received by a DLSw, this message
  970.    is discarded and ignored.  Use of this message is optional.
  971.  
  972.    For the exchange of NetBIOS control messages, the entire DLC header
  973.    is carried as part of the message unit.  This includes the MAC
  974.    header, with the routing information field padded to 18 bytes, and
  975.    the LLC header. The following message types are affected:
  976.    NETBIOS_NQ, NETBIOS_NR, NETBIOS_ANQ, NETBIOS_ANR, and DATAFRAME when
  977.    being used by NetBIOS systems.  The routing information in the DLC
  978.    header is not used by the remote Data Link Switch upon receiving the
  979.    above five messages.
  980.  
  981.    Any SSP message types not defined above if received by a DLSw are to
  982.    be ignored (i.e., no error action is to be performed).  A Data Link
  983.    Switch should quietly drop any SSP message with a Message Type that
  984.    is not recognized or not supported.  Receipt of such a message should
  985.    not cause the termination of the transport connection to the message
  986.    sender.
  987.  
  988. 4.  Circuit Priority
  989.  
  990.    At circuit start time, each circuit end point will provide priority
  991.    information to its circuit partner.  The initiator of the circuit
  992.    will choose which circuit priority will be effective for the life of
  993.    the circuit.  If Priority is not implemented by the Data Link Switch,
  994.    then "Unsupported" priority is used.
  995.  
  996. 4.1  Frame format
  997.  
  998.    Circuit priority will be valid in the CANUREACH_cs, ICANREACH_cs, and
  999.    REACH_ACK frames only. The relevant header field is shown below.  The
  1000.    Circuit Priority value is a byte value at offset 22 in an SSP Control
  1001.    Message.
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Wells & Bartky                                                 [Page 18]
  1011.  
  1012. RFC 1795                  Data Link Switching                 April 1995
  1013.  
  1014.  
  1015.    The following describes the format of the Circuit Priority byte.
  1016.  
  1017.      7   6   5   4   3   2   1   0
  1018.    +-------------------+-----------+
  1019.    |   reserved        |    CP     |
  1020.    +-------------------+-----------+
  1021.  
  1022.    CP: Circuit Priority bits
  1023.            000 - Unsupported       (note 1)
  1024.            001 - Low Priority
  1025.            010 - Medium Priority
  1026.            011 - High Priority
  1027.            100 - Highest Priority
  1028.            101 to 111 are reserved for future use
  1029.  
  1030.    Note 1: Unsupported means that the Data Link Switch that originates
  1031.    the circuit does not implement priority.  Actions taken on
  1032.    Unsupported priority are vendor specific.
  1033.  
  1034. 4.2  Circuit Startup
  1035.  
  1036.    The sender of a CANUREACH_cs is responsible for setting the CP bits
  1037.    to reflect the priority it would like to use for the circuit being
  1038.    requested.  The mechanism for choosing an appropriate value is
  1039.    implementation dependent.  The sender of an ICANREACH_cs frame will
  1040.    set the CP bits to reflect the priority it would like to use for the
  1041.    circuit being requested, with the mechanism for choosing the
  1042.    appropriate value being implementation dependent.  The receiver of
  1043.    the ICANREACH_cs will select from the priorities in the CANUREACH_cs
  1044.    and ICANREACH_cs frames, and will set the value in the CP field of
  1045.    the REACH_ACK frame that follows to the value to be used for this
  1046.    circuit.  This priority will be used for the life of the circuit.  A
  1047.    CANUREACH_cs or ICANREACH_cs with the circuit priority value set to
  1048.    Unsupported (CP=000) indicates that the sender does not support the
  1049.    circuit priority function.
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Wells & Bartky                                                 [Page 19]
  1067.  
  1068. RFC 1795                  Data Link Switching                 April 1995
  1069.  
  1070.  
  1071.    Flow:
  1072.  
  1073.       DLSw A               DLSw B
  1074.  
  1075.    CANUREACH_cs (CP=011) ----->           Circuit initiator requests
  1076.                                           high Priority.
  1077.  
  1078.         <--------- ICANREACH_cs (CP=010)  Circuit target requests
  1079.                                           medium priority.
  1080.  
  1081.    REACH_ACK (CP=010) -------->           Circuit initiator sets
  1082.                                           the priority for this
  1083.                                           circuit to medium. The
  1084.                                           circuit initiator could
  1085.                                           choose either high or
  1086.                                           medium in this example.
  1087.  
  1088. 5.  DLSw State Machine
  1089.  
  1090.    The following state tables describe the states for a single circuit
  1091.    through the Data Link Switch.  State information is kept for each
  1092.    connection.  The initial state for a connection is DISCONNECTED.  The
  1093.    steady state is either CIRCUIT_ESTABLISHED or CONNECTED.  In the former
  1094.    state, an end-to-end circuit has been established allowing the support
  1095.    of Type 1 LLC between the end systems.  The latter state exists when an
  1096.    end-to-end connection has been established for the support of Type 2 LLC
  1097.    services between the end systems.
  1098.  
  1099.    For SNA, LLC type 2 connection establishment is via the use of IEEE
  1100.    802.2 Test or XID  frames.  SNA devices send these frames to the null
  1101.    SAP in order to determine the source route information in support of
  1102.    bridging.  Normally SNA devices use SAP 0x04, 0x08, or 0x0C  (most SNA
  1103.    LLC2 devices that have a single PU per MAC address use a default of
  1104.    0x04).  Typically the SAP would be used to determine if the Test frames
  1105.    should be sent to the DLSw code in the router.  If both bridging and
  1106.    DLSw are enabled, this allows the product to ensure that SNA frames are
  1107.    not both bridged and switched.  Note that although typically SNA uses a
  1108.    DSAP and SSAP of 0x04, it allows for other SAPs to be configured and
  1109.    supports unequal SAPs.  This allows multiple PUs to share connections
  1110.    between two given MAC addresses (each PU to PU session uses one LLC2
  1111.    connection).
  1112.  
  1113.    For NetBIOS, LLC type 2 connection establishment is via the Name Query
  1114.    and Name Recognized frames.  These frames are used for both address
  1115.    resolution and source route determination.  NetBIOS devices use SAP
  1116.    0xF0.
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Wells & Bartky                                                 [Page 20]
  1123.  
  1124. RFC 1795                  Data Link Switching                 April 1995
  1125.  
  1126.  
  1127. 5.1  Data Link Switch States
  1128.  
  1129.    The Switch-to-Switch Protocol is formally defined through the state
  1130.    machines described in this chapter.  The following table lists the
  1131.    thirteen possible states for the main circuit FSM.  A separate state
  1132.    machine instance is employed for each end-to-end circuit that is
  1133.    maintained by the Data Link Switch.
  1134.  
  1135.    State Name            Description
  1136.    ----------            -----------
  1137.    CIRCUIT_ESTABLISHED   The end-to-end circuit has been
  1138.                          established.  At this time LLC Type 1
  1139.                          services are available from end-to-end.
  1140.  
  1141.    CIRCUIT_PENDING       The target DLSw is awaiting a REACH_ACK
  1142.                          response to an ICANREACH_cs message.
  1143.  
  1144.    CIRCUIT_RESTART       The DLSw that originated the reset is
  1145.                          awaiting the restart of the data link
  1146.                          and the DL_RESTARTED response to a
  1147.                          RESTART_DL message.
  1148.  
  1149.    CIRCUIT_START         The origin DLSw is awaiting a
  1150.                          ICANREACH_cs in response to a
  1151.                          CANUREACH_cs message.
  1152.  
  1153.    CONNECTED             The end-to-end connection has
  1154.                          been established thereby allowing
  1155.                          LLC Type 2 services from end-to-end
  1156.                          in addition to LLC Type 1 services.
  1157.  
  1158.    CONNECT_PENDING       The origin DLSw is awaiting the
  1159.                          CONTACTED response to a CONTACT
  1160.                          message.
  1161.  
  1162.    CONTACT_PENDING       The target DLSw is awaiting the
  1163.                          DLC_CONTACTED confirmation to a
  1164.                          DLC_CONTACT signal (i.e., DLC
  1165.                          is waiting for a UA response to
  1166.                          an SABME command).
  1167.  
  1168.    DISCONNECTED          The initial state with no circuit
  1169.                          or connection established, the
  1170.                          DLSw is awaiting either a
  1171.                          CANUREACH_cs, or an ICANREACH_cs.
  1172.  
  1173.    DISCONNECT_PENDING    The DLSw that originated the
  1174.                          disconnect is awaiting the DL_HALTED
  1175.  
  1176.  
  1177.  
  1178. Wells & Bartky                                                 [Page 21]
  1179.  
  1180. RFC 1795                  Data Link Switching                 April 1995
  1181.  
  1182.  
  1183.                          response to a HALT_DL message.
  1184.  
  1185.    HALT_PENDING          The remote DLSw is awaiting the
  1186.                          DLC_DL_HALTED indication following
  1187.                          the DLC_HALT_DL request (i.e., DLC
  1188.                          is waiting for a UA response to a
  1189.                          DISC command), due to receiving a
  1190.                          HALT_DL message.
  1191.  
  1192.    HALT_PENDING_NOACK    The remote DLSw is awaiting the
  1193.                          DLC_DL_HALTED indication following
  1194.                          the DLC_HALT_DL request (i.e., DLC
  1195.                          is waiting for a UA response to a
  1196.                          DISC command), due to receiving a
  1197.                          HALT_DL_NOACK message.
  1198.  
  1199.    RESTART_PENDING       The remote DLSw is awaiting the
  1200.                          DLC_DL_HALTED indication following
  1201.                          the DLC_HALT_DL request (i.e., DLC
  1202.                          is waiting for a UA response to a
  1203.                          DISC command), and the restart of
  1204.                          the data link.
  1205.  
  1206.    RESOLVE_PENDING       The target DLSw is awaiting
  1207.                          the DLC_DL_STARTED indication
  1208.                          following the DLC_START_DL request
  1209.                          (i.e., DLC is waiting for a Test
  1210.                          response as a result of sending a
  1211.                          Test command).
  1212.  
  1213.    The DISCONNECTED state is the initial state for a new circuit.  One
  1214.    end station starts the connection via an XID or SABME command (i.e.,
  1215.    DLC_XID or DLC_CONTACTED).  Upon receipt, the Data Link Switches
  1216.    exchange a set of CANUREACH_cs, ICANREACH_cs and REACH_ACK messages.
  1217.    Upon completion of this three-legged exchange both Data Link Switches
  1218.    will be in the CIRCUIT_ESTABLISHED state.  Three pending states also
  1219.    exist during this exchange.  The CIRCUIT_START state is entered by
  1220.    the origin Data Link Switch after it has sent the CANUREACH_cs
  1221.    message.  The RESOLVE_PENDING state is entered by the target Data
  1222.    Link Switch awaiting a Test response to a Test Command.  And lastly,
  1223.    the CIRCUIT_PENDING state is entered by the target DLSw awaiting the
  1224.    REACH_ACK reply to an ICANREACH_cs message.
  1225.  
  1226.    The CIRCUIT_ESTABLISHED state allows for the exchange of LLC Type 1
  1227.    frames such as the XID exchanges between SNA stations that occurs
  1228.    prior to the establishment of a connection.  Also, datagram traffic
  1229.    (i.e., UI frames)  may be sent and received between the end stations.
  1230.    These exchanges use the XIDFRAME and DGRMFRAME messages sent between
  1231.  
  1232.  
  1233.  
  1234. Wells & Bartky                                                 [Page 22]
  1235.  
  1236. RFC 1795                  Data Link Switching                 April 1995
  1237.  
  1238.  
  1239.    the Data Link Switches.
  1240.  
  1241.    In the CIRCUIT_ESTABLISHED state, the receipt of a SABME command
  1242.    (i.e., DLC_CONTACTED) causes the origin DLSw to issue a CONTACT
  1243.    message, to send an RNR supervisory frame (i.e., DLC_ENTER_BUSY) to
  1244.    the origin station, and to enter the CONNECT_PENDING state awaiting a
  1245.    CONTACTED message.  The target DLSw, upon the receipt of a CONTACT
  1246.    message, will issue a SABME command (i.e., DLC_CONTACT) and enter the
  1247.    Contact Pending state.  Once the UA response is received (i.e.,
  1248.    DLC_CONTACTED), the target DLSw sends a CONTACTED message and enters
  1249.    the CONNECTED state. When received, the origin DLSw enters the
  1250.    CONNECTED state and sends an RR supervisory frame (i.e.,
  1251.    DLC_EXIT_BUSY).
  1252.  
  1253.    The CONNECTED state is the steady state for normal data flow once a
  1254.    connection has been established.  Information frames (i.e., INFOFRAME
  1255.    messages) are simply sent back and forth between the end points of
  1256.    the connection.  This is the path that should be optimized for
  1257.    performance.
  1258.  
  1259.    The connection is terminated upon the receipt of a DISC frame or
  1260.    under some other error condition detected by DLC (i.e., DLC_ERROR).
  1261.    Upon receipt of this indication, the DLSw will halt the local data
  1262.    link, send a HALT_DL message to the remote DLSw, and enter the
  1263.    DISCONNECT_PENDING State.  When the HALT_DL frame is received by the
  1264.    other DLSw, the local DLC is halted for this data link, a DL_HALTED
  1265.    message is returned, and the DISCONNECTED state is entered.  Receipt
  1266.    of this DL_HALTED message causes the other DLSw to also enter the
  1267.    DISCONNECTED state.
  1268.  
  1269.    The CIRCUIT_RESTART state is entered if one of the Data Link Switches
  1270.    receives a SABME command  (i.e., DLC_RESET) after data transfer while
  1271.    in the CONNECTED state.  This causes a DM command to be returned to
  1272.    the origin station and a RESTART_DL message to be sent to the remote
  1273.    Data Link Switch. This causes the remote data link to be halted and
  1274.    then restarted.  The remote DLSw will then send a DL_RESTARTED
  1275.    message back to the first DLSw.  The receipt of the DL_RESTARTED
  1276.    message causes the first DLSw to issue a new CONTACT message,
  1277.    assuming that the local DLC has been contacted (i.e., the origin
  1278.    station has resent the SABME command).  This is eventually responded
  1279.    to by a CONTACTED message. Following this exchange, both Data Link
  1280.    Switches will return to the CONNECTED state.  If the local DLC has
  1281.    not been contacted, the receipt of a DL_RESTARTED command causes the
  1282.    Data Link Switch to enter the CIRCUIT_ESTABLISHED state awaiting the
  1283.    receipt of a SABME command (i.e., DLC_CONTACTED signal).
  1284.  
  1285.    The HALT_PENDING, HALT_PENDING_NOACK and RESTART_PENDING states
  1286.    correspond to the cases when the Data Link Switch is awaiting
  1287.  
  1288.  
  1289.  
  1290. Wells & Bartky                                                 [Page 23]
  1291.  
  1292. RFC 1795                  Data Link Switching                 April 1995
  1293.  
  1294.  
  1295.    responses from the local station on the adjacent LAN (e.g., a UA
  1296.    response to a DISC command). Also in the RESTART_PENDING state, the
  1297.    Data Link Switch will attempt to restart the data link prior to
  1298.    sending a DL_RESTARTED message.  For some implementations, the start
  1299.    of a data link involves the exchange of a Test command/response on
  1300.    the adjacent LAN (i.e., DLC_START_DL).  For other implementations,
  1301.    this additional exchange may not be required.
  1302.  
  1303. 5.2  State Transition Tables
  1304.  
  1305.    This section provides a detailed representation of the Data Link
  1306.    Switch, as documented by a single state machine.  Many of the
  1307.    transitions are dependent upon local signals between the Data Link
  1308.    Switch entity and one of the DLC entities.  These signals and their
  1309.    definitions are given in the following tables.
  1310.  
  1311.    DLC Events:
  1312.  
  1313.    Event Name      Description
  1314.    ----------      -----------
  1315.    DLC_CONTACTED   Contact Indication:  DLC has received an SABME
  1316.                    command or DLC has received a UA response as a
  1317.                    result of sending an SABME command.
  1318.  
  1319.    DLC_DGRM        Datagram Indication:  DLC has received a UI frame.
  1320.  
  1321.    DLC_ERROR       Error condition indicated by DLC:  Such a
  1322.                    condition occurs when a DISC command is received
  1323.                    or when DLC experiences an unrecoverable error.
  1324.  
  1325.    DLC_INFO        Information Indication:  DLC has received an
  1326.                    Information (I) frame.
  1327.  
  1328.    DLC_DL_HALTED   Data Link Halted Indication:  DLC has
  1329.                    received a UA response to a DISC command.
  1330.  
  1331.    DLC_DL_STARTED  Data Link Started Indication:  DLC has
  1332.                    received a Test response from the null SAP.
  1333.  
  1334.    DLC_RESET       Reset Indication:  DLC has received an SABME
  1335.                    command during the time a connection is
  1336.                    currently active and has responded with DM.
  1337.  
  1338.    DLC_RESOLVE_C   Resolve Command Indication:  DLC has received
  1339.                    a Test command addressed to the null SAP, or an
  1340.                    XID command addressed to the null SAP.
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Wells & Bartky                                                 [Page 24]
  1347.  
  1348. RFC 1795                  Data Link Switching                 April 1995
  1349.  
  1350.  
  1351.    DLC_RESOLVED    Resolve request:  DLC has received a TEST response
  1352.                    frame (or equivalent for non-LAN DLCs) but has not
  1353.                    reserved the resources required for a circuit yet.
  1354.  
  1355.    DLC_XID         XID Indication:  DLC has received an XID command
  1356.                    or response to a non-null SAP.
  1357.  
  1358.    Other Events:
  1359.  
  1360.    Event Name      Description
  1361.    ----------      -----------
  1362.    XPORT_FAILURE   Failure of the transport connection used by the
  1363.                    circuit.
  1364.  
  1365.    CS_TIMER_EXP    The CIRCUIT_START timer (started when the circuit
  1366.                    went into CIRCUIT_START state) has expired.
  1367.  
  1368.  
  1369.    DLC Actions:
  1370.  
  1371.    Action Name     Description
  1372.    -----------     -----------
  1373.    DLC_CONTACT     Contact Station Request:  DLC will send a SABME
  1374.                    command or a UA response to an outstanding SABME
  1375.                    command.
  1376.  
  1377.    DLC_DGRM        Datagram Request:  DLC will send a UI frame.
  1378.  
  1379.    DLC_ENTER_BUSY  Enter Link Station Busy:  DLC will send an
  1380.                    RNR supervisory frame.
  1381.  
  1382.    DLC_EXIT_BUSY   Exit Link Station Busy:  DLC will send an RR
  1383.                    supervisory frame.
  1384.  
  1385.    DLC_HALT_DL     Halt Data Link Request:  DLC will send a DISC
  1386.                    command.
  1387.  
  1388.    DLC_INFO        Information Request:  DLC will send an I frame.
  1389.  
  1390.    DLC_RESOLVE     Resolve request:  DLC should issue a TEST (or
  1391.                    appropriate equivalent for non-LAN DLCs) but need
  1392.                    not reserve the resources required for a circuit yet.
  1393.  
  1394.    DLC_RESOLVE_R   Resolve Response Request:  DLC will send a
  1395.                    Test response or XID response from the null SAP.
  1396.  
  1397.    DLC_START_DL    Start Data Link Request:  DLC will send a Test
  1398.                    command to the null SAP.
  1399.  
  1400.  
  1401.  
  1402. Wells & Bartky                                                 [Page 25]
  1403.  
  1404. RFC 1795                  Data Link Switching                 April 1995
  1405.  
  1406.  
  1407.    DLC_XID         XID Request:  DLC will send an XID command or an
  1408.                    XID response.
  1409.  
  1410.  
  1411.    Other Actions:
  1412.  
  1413.    Action Name     Description
  1414.    ----------      -----------
  1415.    START_CS_TIMER  Start the CIRCUIT_START timer.
  1416.  
  1417.    DLC_RESOLVE_R and DLC_START_DL actions require the DLC to reserve the
  1418.    resources necessary for a link station as they are used only when a
  1419.    circuit is about to be started.  The DLC_RESOLVE action is used for
  1420.    topology explorer traffic and does not require such resources to be
  1421.    reserved, though a DLC implementation may choose not to distinguish
  1422.    this from the DLC_START_DL action.  See section 5.4 for details of
  1423.    the actions and events for explorer frames.
  1424.  
  1425.    The Data Link Switch is described by a state transition table as
  1426.    documented in the following sections.  Each of the states is
  1427.    described below in terms of the events, actions, and next state for
  1428.    each transition. If a particular event is not listed for a given
  1429.    state, no action and no state transition should occur for that event.
  1430.    Any significant comments concerning the transitions within a given
  1431.    state are given immediately following the table representing the
  1432.    state.
  1433.  
  1434.    A separate state machine instance is maintained by the Data Link
  1435.    Switch for each end-to-end circuit.  The number of circuits that may
  1436.    be supported by each Data Link Switch is a local implementation
  1437.    option.
  1438.  
  1439.    The CANUREACH_ex, ICANREACH_ex, NETBIOS_NQ_ex, and NETBIOS_NR_ex are
  1440.    SSP messages that are not associated with a particular circuit.  The
  1441.    processing of these messages is covered in section 5.4.
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Wells & Bartky                                                 [Page 26]
  1459.  
  1460. RFC 1795                  Data Link Switching                 April 1995
  1461.  
  1462.  
  1463. 5.2.1  DISCONNECTED State
  1464.  
  1465.    +----------------------+---------------------+----------------------+
  1466.    |        Event         |      Action(s)      |      Next State      |
  1467.    +----------------------+---------------------+----------------------+
  1468.    | Receive CANUREACH_cs | DLC_START_DL        | RESOLVE_PENDING      |
  1469.    +----------------------+---------------------+----------------------+
  1470.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1471.    +----------------------+---------------------+----------------------+
  1472.    | DLC_XID              | If source route     | If CANUREACH_cs was  |
  1473.    |                      | bridged frame with  | sent:                |
  1474.    |                      | broadcast indicated:|   CIRCUIT_START      |
  1475.    |                      |   Send CANUREACH_ex |                      |
  1476.    |                      | else:               |                      |
  1477.    |                      |   Send CANUREACH_cs |                      |
  1478.    |                      |   START_CS_TIMER    |                      |
  1479.    +----------------------+---------------------+----------------------+
  1480.    | DLC_DGRM             | If NETBIOS          |                      |
  1481.    |                      | NAME_QUERY:         |                      |
  1482.    |                      |  Send NETBIOS_NQ_ex |                      |
  1483.    |                      | else:               |                      |
  1484.    |                      |  Send DATAFRAME     |                      |
  1485.    +----------------------+---------------------+----------------------+
  1486.    | DLC_CONTACTED        | Send CANUREACH_cs   | CIRCUIT_START        |
  1487.    +----------------------+---------------------+----------------------+
  1488.  
  1489.    It is assumed that each Data Link Switch will build a set of topology
  1490.    tables giving the identity of each Data Link Switch that can reach a
  1491.    specific MAC address or a specific NetBIOS name.  This table can be
  1492.    built  using the explorer frames, as per the Explorer FSM in section
  1493.    5.4.  As a consequence, the amount of search traffic can be kept to a
  1494.    minimum.
  1495.  
  1496.    Upon receipt of a TEST command, broadcast XID or NetBIOS NAME_QUERY,
  1497.    the Data Link Switch checks the topology table for the target MAC/SAP
  1498.    or NetBIOS name.  If there is no matching entry in the table, the
  1499.    Data Link Switch uses the explorer FSMs in section 5.4 to locate the
  1500.    target MAC/SAP or NetBIOS name.
  1501.  
  1502.    When the first non-broadcast XID or SABME flows,  the Data Link
  1503.    Switch issues a CANUREACH_cs to attempt to start a circuit.  The
  1504.    CANUREACH_cs message is sent to only those Data Link Switches that
  1505.    are known to be able to reach the given MAC address.  The mechanism
  1506.    by which a topology table entry is determined to be out-of-date and
  1507.    is deleted from the table is implementation specific.
  1508.  
  1509.    The DISCONNECTED state is exited upon the sending of a CANUREACH_cs
  1510.    by the origin DLSw or the receipt of a CANUREACH_cs message by a
  1511.  
  1512.  
  1513.  
  1514. Wells & Bartky                                                 [Page 27]
  1515.  
  1516. RFC 1795                  Data Link Switching                 April 1995
  1517.  
  1518.  
  1519.    prospective target Data Link Switch.  In the latter case, the Data
  1520.    Link Switch will issue a Test command to the target station (i.e.,
  1521.    DLC_START_DL signal is presented to DLC).
  1522.  
  1523. 5.2.2  RESOLVE_PENDING State
  1524.  
  1525.    +-------------------+-----------------------+-----------------------+
  1526.    |        Event      |      Action(s)        |      Next State       |
  1527.    +-------------------+-----------------------+-----------------------+
  1528.    | Receive DATAFRAME | DLC_DGRM              |                       |
  1529.    +-------------------+-----------------------+-----------------------+
  1530.    | DLC_DL_STARTED    | If LF value of        | If LF value of        |
  1531.    |                   | DLC_DL_STARTED        | DLC_DL_STARTED        |
  1532.    |                   | is greater than or    | is greater than or    |
  1533.    |                   | equal to LF Size of   | equal to LF Size of   |
  1534.    |                   | CANUREACH_cs or LF    | CANUREACH_cs or LF    |
  1535.    |                   | Size Control bit set: | Size Control bit set: |
  1536.    |                   |   Send ICANREACH_cs   |   CIRCUIT_PENDING     |
  1537.    |                   | else:                 | else:                 |
  1538.    |                   |   Send DLC_HALT_DL    |   HALT_PENDING_NOACK  |
  1539.    +-------------------+-----------------------+-----------------------+
  1540.    | DLC_ERROR         |                       | DISCONNECTED          |
  1541.    +-------------------+-----------------------+-----------------------+
  1542.    | DLC_DGRM          | Send DATAFRAME        |                       |
  1543.    +-------------------+-----------------------+-----------------------+
  1544.  
  1545.    The RESOLVE_PENDING state is entered upon receipt of a CANUREACH_cs
  1546.    message by the target DLSw.  A data link is started, causing a Test
  1547.    command to be sent by the DLC.
  1548.  
  1549.    Several CANUREACH_cs messages can be received in the RESOLVE_PENDING
  1550.    state.  The Data Link Switch may update its topology information
  1551.    based upon the origin MAC address information in each CANUREACH_cs
  1552.    message.
  1553.  
  1554.    Upon the receipt of a DLC_DL_STARTED signal in the RESOLVE_PENDING
  1555.    state, the Data Link Switch may update its topology table base upon
  1556.    the remote MAC address information.  The ICANREACH_cs message must be
  1557.    returned to the first partner DLSw from which a CANUREACH_cs was
  1558.    received for this circuit, or an implementation may optionally reply
  1559.    to all partners from which the CANUREACH_cs was received.
  1560.  
  1561.    The RESOLVE_PENDING state is exited once the data link has been
  1562.    started (i.e., a DLC_DL_STARTED signal is received as a result of a
  1563.    Test response received by the DLC).  The target Data Link Switch then
  1564.    enters the CIRCUIT_PENDING state.
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Wells & Bartky                                                 [Page 28]
  1571.  
  1572. RFC 1795                  Data Link Switching                 April 1995
  1573.  
  1574.  
  1575. 5.2.3  CIRCUIT_START State
  1576.  
  1577.    +----------------------+---------------------+----------------------+
  1578.    |        Event         |      Action(s)      |      Next State      |
  1579.    +----------------------+---------------------+----------------------+
  1580.    | Receive CANUREACH_cs | If origin MAC addr  | If DLC_START_DL      |
  1581.    | for circuit in       | in CANUREACH_cs is  | issued:              |
  1582.    | opposite direction   | greater than origin |   RESOLVE_PENDING    |
  1583.    |                      | MAC addr of circuit:|                      |
  1584.    |                      |   DLC_START_DL      |                      |
  1585.    |                      | else:               |                      |
  1586.    |                      |   no action taken   |                      |
  1587.    +----------------------+---------------------+----------------------+
  1588.    | Receive ICANREACH_cs | If LF Size Control  | If LF Size Control   |
  1589.    |                      | bit set and LF Size | bit set and LF Size  |
  1590.    |                      | is not negotiable:  | is not negotiable:   |
  1591.    |                      |   Send HALT_DL_NOACK|   DISCONNECTED       |
  1592.    |                      | else:               | else if Connected:   |
  1593.    |                      |   Send REACH_ACK,   |   CONNECT_PENDING    |
  1594.    |                      |   Send appropriate  | else:                |
  1595.    |                      |   SSP message based |   CIRCUIT_ESTABLISHED|
  1596.    |                      |   on the event      |                      |
  1597.    |                      |   that generated    |                      |
  1598.    |                      |   CANUREACH_cs      |                      |
  1599.    |                      |   (see Note)        |                      |
  1600.    +----------------------+---------------------+----------------------+
  1601.    | DLC_DGRM             | Send DATAFRAME      |                      |
  1602.    +----------------------+---------------------+----------------------+
  1603.    | DLC_ERROR            |                     | DISCONNECTED         |
  1604.    +----------------------+---------------------+----------------------+
  1605.    | CS_TIMER_EXP         |                     | DISCONNECTED         |
  1606.    +----------------------+---------------------+----------------------+
  1607.    | XPORT_FAILURE        |                     | DISCONNECTED         |
  1608.    +----------------------+---------------------+----------------------+
  1609.  
  1610.    The CIRCUIT_START state is entered by the origin Data Link Switch
  1611.    when a DLC_XID or DLC_CONTACTED signal has been received from the
  1612.    DLC.
  1613.  
  1614.    The CIRCUIT_START state is exited upon receipt of an ICANREACH_cs
  1615.    message.  A REACH_ACK message is returned to the target Data Link
  1616.    Switch.  If the CIRCUIT_START state was entered due to a DLC_XID
  1617.    signal, an XIDFRAME message containing the XID is sent to the target
  1618.    Data Link Switch.  If the CIRCUIT_START state was entered due to a
  1619.    DLC_CONTACTED signal, a CONTACT message is sent to the target Data
  1620.    Link Switch.
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Wells & Bartky                                                 [Page 29]
  1627.  
  1628. RFC 1795                  Data Link Switching                 April 1995
  1629.  
  1630.  
  1631. 5.2.4  CIRCUIT_PENDING State
  1632.  
  1633.    +----------------------+---------------------+----------------------+
  1634.    |        Event         |      Action(s)      |      Next State      |
  1635.    +----------------------+---------------------+----------------------+
  1636.    | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
  1637.    +----------------------+---------------------+----------------------+
  1638.    | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
  1639.    +----------------------+---------------------+----------------------+
  1640.    | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1641.    +----------------------+---------------------+----------------------+
  1642.    | Receive REACH_ACK    | If Connected:       | If Connected:        |
  1643.    |                      |  Send CONTACT       |  CONNECT_PENDING,    |
  1644.    |                      |                     | else:                |
  1645.    |                      |                     |  CIRCUIT_ESTABLISHED |
  1646.    +----------------------+---------------------+----------------------+
  1647.    | Receive XIDFRAME     | DLC_XID             |                      |
  1648.    +----------------------+---------------------+----------------------+
  1649.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  1650.    +----------------------+---------------------+----------------------+
  1651.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1652.    +----------------------+---------------------+----------------------+
  1653.    | DLC_CONTACTED        | If UA is sent in    |                      |
  1654.    |                      | response to SABME:  |                      |
  1655.    |                      |   DLC_ENTER_BUSY    |                      |
  1656.    |                      | else:               |                      |
  1657.    |                      |   no action taken   |                      |
  1658.    +----------------------+---------------------+----------------------+
  1659.    | DLC_ERROR            |                     | DISCONNECTED         |
  1660.    +----------------------+---------------------+----------------------+
  1661.    | DLC_XID              | Drop or hold until  |                      |
  1662.    |                      | REACH_ACK received  |                      |
  1663.    +----------------------+---------------------+----------------------+
  1664.    | DLC_DGRM             | Send DATAFRAME      |                      |
  1665.    +----------------------+---------------------+----------------------+
  1666.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1667.    +----------------------+---------------------+----------------------+
  1668.  
  1669.    The CIRCUIT_PENDING state is entered by the target Data Link Switch
  1670.    following the sending of an ICANREACH_cs message.  In this state it
  1671.    is awaiting the reception of a REACH_ACK message from the origin Data
  1672.    Link Switch.
  1673.  
  1674.    If the target Data Link Switch happens to receive a SABME command
  1675.    from the target station while in the CIRCUIT_PENDING state (i.e., a
  1676.    DLC_CONTACTED signal received from the DLC), the reception of the
  1677.    REACH_ACK message causes the target Data Link Switch to enter the
  1678.    CONNECT_PENDING state and to send a CONTACT message to the origin
  1679.  
  1680.  
  1681.  
  1682. Wells & Bartky                                                 [Page 30]
  1683.  
  1684. RFC 1795                  Data Link Switching                 April 1995
  1685.  
  1686.  
  1687.    Data Link Switch.
  1688.  
  1689.    If no such SABME is received, the receipt of the REACH_ACK causes the
  1690.    Data Link Switch to enter CIRCUIT_ESTABLISHED state.
  1691.  
  1692. 5.2.5  CONNECT_PENDING State
  1693.  
  1694.    +----------------------+---------------------+----------------------+
  1695.    |        Event         |      Action(s)      |      Next State      |
  1696.    +----------------------+---------------------+----------------------+
  1697.    | Receive CONTACTED    | If UA was sent in   | CONNECTED            |
  1698.    |                      | response to SABME:  |                      |
  1699.    |                      |   DLC_EXIT_BUSY     |                      |
  1700.    |                      | else:               |                      |
  1701.    |                      |   DLC_CONTACT       |                      |
  1702.    +----------------------+---------------------+----------------------+
  1703.    | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
  1704.    +----------------------+---------------------+----------------------+
  1705.    | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1706.    +----------------------+---------------------+----------------------+
  1707.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  1708.    +----------------------+---------------------+----------------------+
  1709.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1710.    +----------------------+---------------------+----------------------+
  1711.    | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
  1712.    +----------------------+---------------------+----------------------+
  1713.    | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
  1714.    +----------------------+---------------------+----------------------+
  1715.    | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
  1716.    +----------------------+---------------------+----------------------+
  1717.    | DLC_DGRM             | Send DGRMFRAME      |                      |
  1718.    +----------------------+---------------------+----------------------+
  1719.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1720.    +----------------------+---------------------+----------------------+
  1721.  
  1722.    The CONNECT_PENDING state is entered when a DLC_CONTACTED signal has
  1723.    been received from the DLC (i.e., a SABME command has been received).
  1724.    A CONTACT message it then  issued.  The state is exited upon the
  1725.    receipt of a CONTACTED message.  If a DLC_RESET signal is received,
  1726.    the local data link is restarted and a RESTART_DL message is sent to
  1727.    the remote DLSw.
  1728.  
  1729.    An ICANREACH_cs received after the transition to CONNECT_PENDING
  1730.    state indicates that more than one CANUREACH_cs was sent at circuit
  1731.    establishment time and the target station was found by more than one
  1732.    Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the
  1733.    circuit started by the Data Link Switch partner that originated each
  1734.    such ICANREACH_cs.
  1735.  
  1736.  
  1737.  
  1738. Wells & Bartky                                                 [Page 31]
  1739.  
  1740. RFC 1795                  Data Link Switching                 April 1995
  1741.  
  1742.  
  1743.    Note:  Some implementations will also send a Test command in order to
  1744.    restart the data link to the station that sent the SABME command
  1745.    (i.e., a DLC_START_DL will be issued).
  1746.  
  1747. 5.2.6  CIRCUIT_ESTABLISHED State
  1748.  
  1749.    +----------------------+---------------------+----------------------+
  1750.    |        Event         |      Action(s)      |      Next State      |
  1751.    +----------------------+---------------------+----------------------+
  1752.    | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
  1753.    +----------------------+---------------------+----------------------+
  1754.    | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
  1755.    +----------------------+---------------------+----------------------+
  1756.    | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1757.    +----------------------+---------------------+----------------------+
  1758.    | Receive XIDFRAME     | DLC_XID             |                      |
  1759.    +----------------------+---------------------+----------------------+
  1760.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  1761.    +----------------------+---------------------+----------------------+
  1762.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1763.    +----------------------+---------------------+----------------------+
  1764.    | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
  1765.    +----------------------+---------------------+----------------------+
  1766.    | DLC_CONTACTED        | Send CONTACT        | CONNECT_PENDING      |
  1767.    |                      | If UA is sent in    |                      |
  1768.    |                      | response to SABME:  |                      |
  1769.    |                      |   DLC_ENTER_BUSY    |                      |
  1770.    |                      | else:               |                      |
  1771.    |                      |   no action taken   |                      |
  1772.    +----------------------+---------------------+----------------------+
  1773.    | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
  1774.    +----------------------+---------------------+----------------------+
  1775.    | DLC_DGRM             | Send DGRMFRAME      |                      |
  1776.    +----------------------+---------------------+----------------------+
  1777.    | DLC_XID              | Send XIDFRAME       |                      |
  1778.    +----------------------+---------------------+----------------------+
  1779.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1780.    +----------------------+---------------------+----------------------+
  1781.  
  1782.    The CIRCUIT_ESTABLISHED state is entered by the origin Data Link
  1783.    Switch from the CIRCUIT_START state, and by the target Data Link
  1784.    Switch from the CIRCUIT_PENDING state.  The state is exited when a
  1785.    connection is started (i.e., DLC receives a SABME command) or CONTACT
  1786.    is received. The next state is CONTACT_PENDING or CONNECT_PENDING.
  1787.  
  1788.    An ICANREACH_cs received after the transition to CIRCUIT_ESTABLISHED
  1789.    state indicates that more than one CANUREACH_cs was sent at circuit
  1790.    establishment time and the target station was found by more than one
  1791.  
  1792.  
  1793.  
  1794. Wells & Bartky                                                 [Page 32]
  1795.  
  1796. RFC 1795                  Data Link Switching                 April 1995
  1797.  
  1798.  
  1799.    Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the
  1800.    circuit started by the Data Link Switch partner that originated each
  1801.    such ICANREACH_cs.
  1802.  
  1803. 5.2.7  CONTACT_PENDING State
  1804.  
  1805.    +----------------------+---------------------+----------------------+
  1806.    |        Event         |      Action(s)      |      Next State      |
  1807.    +----------------------+---------------------+----------------------+
  1808.    | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
  1809.    +----------------------+---------------------+----------------------+
  1810.    | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1811.    +----------------------+---------------------+----------------------+
  1812.    | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
  1813.    +----------------------+---------------------+----------------------+
  1814.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  1815.    +----------------------+---------------------+----------------------+
  1816.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1817.    +----------------------+---------------------+----------------------+
  1818.    | DLC_CONTACTED        | Send CONTACTED      | CONNECTED            |
  1819.    +----------------------+---------------------+----------------------+
  1820.    | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
  1821.    +----------------------+---------------------+----------------------+
  1822.    | DLC_DGRM             | Send DGRMFRAME      |                      |
  1823.    +----------------------+---------------------+----------------------+
  1824.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1825.    +----------------------+---------------------+----------------------+
  1826.  
  1827.    The CONTACT_PENDING state is entered upon the receipt of a CONTACT
  1828.    message, which causes the Data Link Switch to issue a DLC_CONTACT
  1829.    signal to the DLC (i.e., DLC sends a SABME command).  This state is
  1830.    then exited upon the receipt of a DLC_CONTACTED signal from the DLC
  1831.    (i.e., a UA response received).
  1832.  
  1833.    If a RESTART_DL message is received, indicating that the remote Data
  1834.    Link Switch has received a DLC_RESET signal, the local Data Link
  1835.    Switch sends a DISC command frame on the adjacent LAN (i.e.,
  1836.    DLC_HALT_DL signal) and enter the RESTART_PENDING state.
  1837.  
  1838.    An ICANREACH_cs received after the transition to CONTACT_PENDING
  1839.    state indicates that more than one CANUREACH_cs was sent at circuit
  1840.    establishment time and the target station was found by more than one
  1841.    Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the data
  1842.    link started by the Data Link Switch partner that originated this
  1843.    ICANREACH_cs.
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Wells & Bartky                                                 [Page 33]
  1851.  
  1852. RFC 1795                  Data Link Switching                 April 1995
  1853.  
  1854.  
  1855. 5.2.8  CONNECTED State
  1856.  
  1857.    +----------------------+---------------------+----------------------+
  1858.    |        Event         |      Action(s)      |      Next State      |
  1859.    +----------------------+---------------------+----------------------+
  1860.    | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
  1861.    +----------------------+---------------------+----------------------+
  1862.    | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1863.    +----------------------+---------------------+----------------------+
  1864.    | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
  1865.    +----------------------+---------------------+----------------------+
  1866.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  1867.    +----------------------+---------------------+----------------------+
  1868.    | Receive INFOFRAME    | DLC_INFO            |                      |
  1869.    +----------------------+---------------------+----------------------+
  1870.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1871.    +----------------------+---------------------+----------------------+
  1872.    | Receive XIDFRAME     | If non-activation   |                      |
  1873.    |                      | XID3:               |                      |
  1874.    |                      |   DLC_XID           |                      |
  1875.    +----------------------+---------------------+----------------------+
  1876.    | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
  1877.    +----------------------+---------------------+----------------------+
  1878.    | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
  1879.    +----------------------+---------------------+----------------------+
  1880.    | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
  1881.    +----------------------+---------------------+----------------------+
  1882.    | Rec TEST_CIRCUIT_REQ | Snd TEST_CIRCUIT_RSP|                      |
  1883.    +----------------------+---------------------+----------------------+
  1884.    | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
  1885.    +----------------------+---------------------+----------------------+
  1886.    | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
  1887.    +----------------------+---------------------+----------------------+
  1888.    | DLC_DGRM             | Send DGRMFRAME      |                      |
  1889.    +----------------------+---------------------+----------------------+
  1890.    | DLC_INFO             | Send INFOFRAME      |                      |
  1891.    +----------------------+---------------------+----------------------+
  1892.    | DLC_XID              | If non-activation   |                      |
  1893.    |                      | XID3:               |                      |
  1894.    |                      |   Send XIDFRAME     |                      |
  1895.    +----------------------+---------------------+----------------------+
  1896.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1897.    +----------------------+---------------------+----------------------+
  1898.  
  1899.    The CONNECTED state is entered from the CONNECT_PENDING state upon
  1900.    the receipt of a CONTACTED message or from the CONTACT_PENDING state
  1901.    upon the receipt of a DLC_CONTACTED signal.
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Wells & Bartky                                                 [Page 34]
  1907.  
  1908. RFC 1795                  Data Link Switching                 April 1995
  1909.  
  1910.  
  1911.    The CONNECTED state is exited usually under one of two conditions: a
  1912.    DLC_ERROR signal received from the DLC (e.g., a DISC command received
  1913.    by the local DLC), or a HALT_DL message received from the other Data
  1914.    Link Switch (e.g., a DISC command received by the remote DLC).
  1915.  
  1916.    A SABME command (i.e., a DLC_RESET signal) received by either Data
  1917.    Link Switch will also cause the two Data Link Switches to leave the
  1918.    CONNECTED state and attempt to restart the circuit.  Following the
  1919.    receipt of a SABME, the local Data Link Switch sends a RESTART_DL
  1920.    message to the other Data Link Switch and enters the CIRCUIT_RESTART
  1921.    state.  Upon the receipt of the RESTART_DL message, the remote Data
  1922.    Link Switch sends a DISC command (i.e., DLC_HALT_DL signal) and
  1923.    enters the RESTART_PENDING state.
  1924.  
  1925.    An ICANREACH_cs received after the transition to CONNECTED state
  1926.    indicates that more than one CANUREACH_cs was sent at circuit
  1927.    establishment time and the target station was found by more than one
  1928.    Data Link Switch partner.  A HALT_DL_NOACK is sent to halt the
  1929.    circuit started by the Data Link Switch partner that originated each
  1930.    such ICANREACH_cs.
  1931.  
  1932.    Note:  Some implementations will also send a Test command in order to
  1933.    restart the data link to the station that sent the SABME command
  1934.    (i.e., a DLC_START_DL will be issued).
  1935.  
  1936. 5.2.9  CIRCUIT_RESTART State
  1937.  
  1938.    +----------------------+---------------------+----------------------+
  1939.    |        Event         |      Action(s)      |      Next State      |
  1940.    +----------------------+---------------------+----------------------+
  1941.    | Receive DL_RESTARTED | If Connected:       | If Connected:        |
  1942.    |                      |  Send CONTACT       |  CONNECT_PENDING,    |
  1943.    |                      |                     | else:                |
  1944.    |                      |                     |  CIRCUIT_ESTABLISHED |
  1945.    +----------------------+---------------------+----------------------+
  1946.    | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1947.    +----------------------+---------------------+----------------------+
  1948.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  1949.    +----------------------+---------------------+----------------------+
  1950.    | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
  1951.    +----------------------+---------------------+----------------------+
  1952.    | DLC_DGRM             | Send DGRMFRAME      |                      |
  1953.    +----------------------+---------------------+----------------------+
  1954.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  1955.    +----------------------+---------------------+----------------------+
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962. Wells & Bartky                                                 [Page 35]
  1963.  
  1964. RFC 1795                  Data Link Switching                 April 1995
  1965.  
  1966.  
  1967.    The CIRCUIT_RESTART state is entered if a DLC_RESET signal is
  1968.    received from the local DLC.  This was caused by the receipt of a
  1969.    SABME command while a connection was currently active.  A DM response
  1970.    will be issued to the SABME command and the Data Link Switch will
  1971.    attempt to restart the end-to-end circuit.
  1972.  
  1973.    The CIRCUIT_RESTART state is exited through one of two transitions.
  1974.    The next state depends upon the time the local DLC has reached the
  1975.    contacted state (i.e., a DLC_CONTACTED signal is presented) relative
  1976.    to the receipt of the DL_RESTARTED message.  This signal is caused by
  1977.    the origin station resending the SABME command that initially caused
  1978.    the Data Link Switch to enter the CIRCUIT_RESTART state.  The two
  1979.    cases are as follows:
  1980.  
  1981.       1) DL_RESTARTED message received before the DLC_CONTACTED signal-
  1982.          In this case, the CIRCUIT_ESTABLISHED state is entered.
  1983.  
  1984.       2) DL_RESTARTED message received after the DLC_CONTACTED signal-
  1985.          In this case, the CONNECT_PENDING state is entered.
  1986.  
  1987. 5.2.10  DISCONNECT_PENDING State
  1988.  
  1989.    +----------------------+---------------------+----------------------+
  1990.    |        Event         |      Action(s)      |      Next State      |
  1991.    +----------------------+---------------------+----------------------+
  1992.    | Receive DL_HALTED    |                     | DISCONNECTED         |
  1993.    +----------------------+---------------------+----------------------+
  1994.    | Receive HALT_DL      | Send DL_HALTED      |                      |
  1995.    +----------------------+---------------------+----------------------+
  1996.    | Receive HALT_DL_NOACK|                     | DISCONNECTED         |
  1997.    +----------------------+---------------------+----------------------+
  1998.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  1999.    +----------------------+---------------------+----------------------+
  2000.    | DLC_DGRM             | Send DATAFRAME      |                      |
  2001.    +----------------------+---------------------+----------------------+
  2002.    | XPORT_FAILURE        |                     | DISCONNECTED         |
  2003.    +----------------------+---------------------+----------------------+
  2004.  
  2005.    The DISCONNECT_PENDING state is entered when a DLC_ERROR signal is
  2006.    received from the local DLC.  Upon receipt of this signal, a HALT_DL
  2007.    message is sent.  Once an DL_HALTED message is received, the state is
  2008.    exited, and the Data Link Switch enters the DISCONNECTED state.
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018. Wells & Bartky                                                 [Page 36]
  2019.  
  2020. RFC 1795                  Data Link Switching                 April 1995
  2021.  
  2022.  
  2023. 5.2.11  RESTART_PENDING State
  2024.  
  2025.    +----------------------+---------------------+----------------------+
  2026.    |        Event         |      Action(s)      |      Next State      |
  2027.    +----------------------+---------------------+----------------------+
  2028.    | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
  2029.    +----------------------+---------------------+----------------------+
  2030.    | Receive DGRMFRAME    | DLC_DGRM            |                      |
  2031.    +----------------------+---------------------+----------------------+
  2032.    | DLC_DL_HALTED        | Send DL_RESTARTED   | CIRCUIT_ESTABLISHED  |
  2033.    +----------------------+---------------------+----------------------+
  2034.    | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
  2035.    +----------------------+---------------------+----------------------+
  2036.    | DLC_DGRM             | Send DGRMFRAME      |                      |
  2037.    +----------------------+---------------------+----------------------+
  2038.    | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
  2039.    +----------------------+---------------------+----------------------+
  2040.  
  2041.    The RESTART_PENDING state is entered upon the receipt of a RESTART_DL
  2042.    message from the remote DLSw while the local Data Link Switch is in
  2043.    either the CONTACT_PENDING state or the CONNECTED state, which causes
  2044.    the local DLSw to issue a DISC command to the DLC.  Upon the receipt
  2045.    of the UA response (DLC_DL_HALTED), the data link is restarted, a
  2046.    DL_RESTARTED message is returned to the remote DLSw, and the
  2047.    CIRCUIT_ESTABLISHED state is entered.
  2048.  
  2049.    Note:  Some implementations will send a Test command in order to
  2050.    restart the data link to the target station (i.e., a DLC_START_DL
  2051.    will be issued) prior to sending the DL_RESTARTED message.
  2052.  
  2053. 5.2.12  HALT_PENDING State
  2054.  
  2055.    +----------------------+---------------------+----------------------+
  2056.    |        Event         |      Action(s)      |      Next State      |
  2057.    +----------------------+---------------------+----------------------+
  2058.    | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
  2059.    +----------------------+---------------------+----------------------+
  2060.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  2061.    +----------------------+---------------------+----------------------+
  2062.    | DLC_DL_HALTED        | Send DL_HALTED      | DISCONNECTED         |
  2063.    +----------------------+---------------------+----------------------+
  2064.    | DLC_ERROR            | Send DL_HALTED      | DISCONNECTED         |
  2065.    +----------------------+---------------------+----------------------+
  2066.    | DLC_DGRM             | Send DATAFRAME      |                      |
  2067.    +----------------------+---------------------+----------------------+
  2068.    | XPORT_FAILURE        |                     | HALT_PENDING_NOACK   |
  2069.    +----------------------+---------------------+----------------------+
  2070.  
  2071.  
  2072.  
  2073.  
  2074. Wells & Bartky                                                 [Page 37]
  2075.  
  2076. RFC 1795                  Data Link Switching                 April 1995
  2077.  
  2078.  
  2079.    The HALT_PENDING state is entered upon the receipt of a HALT_DL
  2080.    message. This causes the local DLC to issue a DISC command.  Upon the
  2081.    receipt of the UA response (DLC_DL_HALTED), a DL_HALTED message is
  2082.    returned to the remote DLSw and the DISCONNECTED state is entered.
  2083.  
  2084. 5.2.13  HALT_PENDING_NOACK State
  2085.  
  2086.    +----------------------+---------------------+----------------------+
  2087.    |        Event         |      Action(s)      |      Next State      |
  2088.    +----------------------+---------------------+----------------------+
  2089.    | Receive DATAFRAME    | DLC_DGRM            |                      |
  2090.    +----------------------+---------------------+----------------------+
  2091.    | DLC_DL_HALTED        |                     | DISCONNECTED         |
  2092.    +----------------------+---------------------+----------------------+
  2093.    | DLC_ERROR            |                     | DISCONNECTED         |
  2094.    +----------------------+---------------------+----------------------+
  2095.    | DLC_DGRM             | Send DATAFRAME      |                      |
  2096.    +----------------------+---------------------+----------------------+
  2097.  
  2098.    The HALT_PENDING_NOACK state is entered upon the receipt of a
  2099.    HALT_DL_NOACK message.  This causes the local DLC to issue a DISC
  2100.    command.  Upon the receipt of the UA response (DLC_DL_HALTED), the
  2101.    DISCONNECTED state is entered.
  2102.  
  2103. 5.3  NetBIOS Datagrams
  2104.  
  2105.    The NetBIOS protocols use a number of UI frames for directory
  2106.    services and the transmission of datagrams.  Most of these frames are
  2107.    directed to a group MAC address (GA) with the routing information
  2108.    field indicating spanning tree explorer (STE) (a.k.a. Single Route
  2109.    Broadcast).  The NB_Add_Name_Response and NB_Name_Recognized frames
  2110.    are directed to a specific MAC address with the routing information
  2111.    field indicating an all routes explorer frame (ARE) (a.k.a. All
  2112.    Routes Broadcast)  The NB_Status_Response frame, is directed to a
  2113.    specific MAC address with the routing information field indicating a
  2114.    specifically routed frame (SRF). The handling of these frames is
  2115.    summarized in the following table.
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130. Wells & Bartky                                                 [Page 38]
  2131.  
  2132. RFC 1795                  Data Link Switching                 April 1995
  2133.  
  2134.  
  2135.    +---------------------------+------------------+--------------------+
  2136.    |          Event            |     Action(s)    |      Comment       |
  2137.    +---------------------------+------------------+--------------------+
  2138.    | DLC_DGRM for NETBIOS      | Send NETBIOS_ANQ | Transmitted to all |
  2139.    |  group address:           |                  |   remote DLSw      |
  2140.    |   NB_Add_Name_Query       |                  |                    |
  2141.    +---------------------------+------------------+--------------------+
  2142.    | DLC_DGRM for a specific   | Send NETBIOS_ANR | Transmitted to     |
  2143.    |  address:                 |                  |   specific DLSw    |
  2144.    |   NB_Add_Name_Response    |                  |                    |
  2145.    +---------------------------+------------------+--------------------+
  2146.    | DLC_DGRM for a specific   | Send DATAFRAME   | Transmitted to all |
  2147.    |  address:                 |                  |   remote DLSw      |
  2148.    |   NB_Status_Response      |                  |                    |
  2149.    +---------------------------+------------------+--------------------+
  2150.    | DLC_DGRM for NETBIOS      | Send DATAFRAME   | Transmitted to all |
  2151.    |  group address:           |                  |   remote DLSw      |
  2152.    |   NB_Name_in_Conflict     |                  |                    |
  2153.    |   NB_Add_Group_Name_Query |                  |                    |
  2154.    |   NB_Datagram,            |                  |                    |
  2155.    |   NB_Datagram_Broadcast   |                  |                    |
  2156.    |   NB_Status_Query         |                  |                    |
  2157.    |   NB_Terminate_Trace      |                  |                    |
  2158.    +---------------------------+------------------+--------------------+
  2159.  
  2160.    The above actions do not apply in the following states:
  2161.    CIRCUIT_ESTABLISHED, CONTACT_PENDING, CONNECT_PENDING, CONNECTED, and
  2162.    CIRCUIT_PENDING.  The handling of the remaining two UI frames used by
  2163.    NetBIOS systems, NB_Name_Query and NB_Name_Recognized, are documented
  2164.    as part of the DLSw state machine in the previous section (i.e.,
  2165.    DISCONNECTED and RESOLVE_PENDING states).  Furthermore, the handling
  2166.    of NetBIOS datagrams (i.e., NB_Datagram) sent to a specific MAC
  2167.    address is also governed by the DLSw state machine.
  2168.  
  2169.    Note:  Some implementations also issue Test frames during the
  2170.    exchange of the NetBIOS, NB_Name_Query and NB_Name_Recognized.  This
  2171.    exchange of protocol data units occurs during the start of a data
  2172.    link and is used to determine the routing information.  Most other
  2173.    implementations of NetBIOS will use the
  2174.    NB_Name_Query/NB_Name_Recognized exchange to determine routes in
  2175.    conjunction with resolving the NetBIOS names. These differences are
  2176.    not reflected in the SSP protocols.
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186. Wells & Bartky                                                 [Page 39]
  2187.  
  2188. RFC 1795                  Data Link Switching                 April 1995
  2189.  
  2190.  
  2191.    The handling of the NetBIOS specific SSP messages is given in the
  2192.    following table.
  2193.  
  2194.    +---------------+-------------------------+-------------------------+
  2195.    |     Event     |        Action(s)        |         Comment         |
  2196.    +---------------+-------------------------+-------------------------+
  2197.    | NETBIOS_ANQ   | DLC_DGRM:               | Routed STE              |
  2198.    |               |    NB_Add_Name_Query    | (NETBIOS Group Address) |
  2199.    +---------------+-------------------------+-------------------------+
  2200.    | NETBIOS_ANR   | DLC_DGRM:               | Routed ARE              |
  2201.    |               |    NB_Add_Name_Response | (Specific MAC Address)  |
  2202.    +---------------+-------------------------+-------------------------+
  2203.    | NETBIOS_NQ_ex | DLC_DGRM:               | Routed STE              |
  2204.    |               |    NB_Name_Query        | (NETBIOS Group Address) |
  2205.    +---------------+-------------------------+-------------------------+
  2206.    | NETBIOS_NQ_cs | DLC_DGRM:               | Routed STE              |
  2207.    |               |    NB_Name_Query        | (NETBIOS Group Address) |
  2208.    +---------------+-------------------------+-------------------------+
  2209.    | NETBIOS_NR_ex | DLC_DGRM:               | Routed ARE              |
  2210.    |               |    NB_Name_Recognized   | (Specific MAC Address)  |
  2211.    +---------------+-------------------------+-------------------------+
  2212.    | NETBIOS_NR_cs | DLC_DGRM:               | Routed ARE              |
  2213.    |               |    NB_Name_Recognized   | (Specific MAC Address)  |
  2214.    +---------------+-------------------------+-------------------------+
  2215.    | DATAFRAME     | DLC_DGRM                | If NB_Status_Response:  |
  2216.    |               |                         |  Routed ARE             |
  2217.    |               |                         |  (Specific MAC Address) |
  2218.    |               |                         | Else:                   |
  2219.    |               |                         |  Routed STE             |
  2220.    |               |                         |  (NETBIOS Group Address)|
  2221.    +---------------+-------------------------+-------------------------+
  2222.  
  2223.    The above actions apply to all DLSw states.  The handling of NetBIOS
  2224.    datagrams sent within DGRMFRAME messages is governed by the DLSw
  2225.    state machine.  The DGRMFRAME message type is employed instead of the
  2226.    DATAFRAME message type once the end-to-end circuit has been
  2227.    established. At that time, the message is addressed according to the
  2228.    pair of Circuit IDs in the message header instead of relying upon the
  2229.    MAC address information in the token ring header.
  2230.  
  2231. 5.4  Explorer Traffic
  2232.  
  2233.    The CANUREACH_ex, ICANREACH_ex, NETBIOS_NQ_ex, and NETBIOS_NR_ex SSP
  2234.    messages explore the topology of the DLSw cloud and the networks
  2235.    attached to it.  These explorer frames are used to determine the DLSw
  2236.    partners through which a MAC or NetBIOS name can be accessed.  This
  2237.    information may optionally be cached to reduce explorer traffic in
  2238.    the DLSw cloud.
  2239.  
  2240.  
  2241.  
  2242. Wells & Bartky                                                 [Page 40]
  2243.  
  2244. RFC 1795                  Data Link Switching                 April 1995
  2245.  
  2246.  
  2247.    If a DLSw is aware from cached information that a given MAC address
  2248.    or NetBIOS name is accessible through a given partner DLSw, it should
  2249.    direct all circuit setup attempts to that partner.  If the circuit
  2250.    setup fails, or no such data is available in the MAC or name cache
  2251.    database, the DLSw may fallback to issuing the setup attempt to all
  2252.    DLSw partners on the assumption that the cached data is now out of
  2253.    date.  The mechanism for determining when to use such a fallback is
  2254.    implementation defined.
  2255.  
  2256.    DLSw implementations may also use a local MAC cache to enable
  2257.    responses to CANUREACH_ex requests to be issued without the need for
  2258.    TEST frame exchange (or equivalent) until the CANUREACH_cs is
  2259.    received.  Again, the fallback mechanism for determining when such
  2260.    local cache data is out-of-date is implementation defined.
  2261.  
  2262.    The use of either cache is an optional function in DLSw.  An
  2263.    implementation may choose to always issue explorer frames or to use
  2264.    either or both types of cache.
  2265.  
  2266.    The following sections describe the FSMs used for explorer frames.
  2267.    The DLC events and actions are a subset of those described in section
  2268.    5.2 for the main circuit FSM.
  2269.  
  2270. 5.4.1  CANUREACH/ICANREACH Explorer FSM
  2271.  
  2272.    The FSM described below is used to handle explorer frames routed by
  2273.    MAC address.  There is one instance of this FSM for each Data Link ID
  2274.    (Target and Origin MAC/SAP pair) for which explorer traffic is
  2275.    flowing. The states in this FSM are as follows.
  2276.  
  2277.    State Name            Description
  2278.    ----------            -----------
  2279.    RESET                 The initial state.
  2280.  
  2281.    SENT_EX               Local DLSw has issued an explorer message
  2282.  
  2283.    RECEIVED_EX           Local DLSw has received an explorer message
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298. Wells & Bartky                                                 [Page 41]
  2299.  
  2300. RFC 1795                  Data Link Switching                 April 1995
  2301.  
  2302.  
  2303. 5.4.1.1  RESET State
  2304.  
  2305.    +----------------------+---------------------+----------------------+
  2306.    |        Event         |      Action(s)      |      Next State      |
  2307.    +----------------------+---------------------+----------------------+
  2308.    | Receive CANUREACH_ex | If replying from    | If DLC_RESOLVE sent, |
  2309.    |                      | cache, send         |   RECEIVED_EX        |
  2310.    |                      | ICANREACH_ex        |                      |
  2311.    |                      | else if allowed to  |                      |
  2312.    |                      | test availability,  |                      |
  2313.    |                      | issue DLC_RESOLVE.  |                      |
  2314.    |                      | Optionally update   |                      |
  2315.    |                      | cache.              |                      |
  2316.    +----------------------+---------------------+----------------------+
  2317.    | Receive ICANREACH_ex | Optionally update   | RESET                |
  2318.    |                      | cache               |                      |
  2319.    +----------------------+---------------------+----------------------+
  2320.    | DLC_RESOLVE_C        | Send CANUREACH_ex   | SENT_EX              |
  2321.    +----------------------+---------------------+----------------------+
  2322.  
  2323.    RESET is the initial state for the CANUREACH/ICANREACH explorer FSM.
  2324.    This state is exited when a DLC_RESOLVE_C request is received from
  2325.    the DLC or a CANUREACH_ex is received from a remote DLSw.
  2326.  
  2327.    A DLSw implementation may optionally reply from to CANUREACH_ex
  2328.    messages on the basis of cached topology information, in which case
  2329.    the DLC_RESOLVE exchange (i.e., TEST) is not required.  If cache is
  2330.    not used, or no match is found, and the DLC permits the use of TEST,
  2331.    DLC_RESOLVE is issued to locate the target MAC and the state changes
  2332.    to RECEIVED_EX. If no cache entry is available and TEST is not
  2333.    allowed by the DLC, a received CANUREACH_ex frame is ignored.
  2334.  
  2335. 5.4.1.2  SENT_EX State
  2336.  
  2337.    +----------------------+---------------------+----------------------+
  2338.    |        Event         |      Action(s)      |      Next State      |
  2339.    +----------------------+---------------------+----------------------+
  2340.    | Receive ICANREACH_ex | DLC_RESOLVE_R       | RESET                |
  2341.    |                      | Optionally update   |                      |
  2342.    |                      | cache               |                      |
  2343.    +----------------------+---------------------+----------------------+
  2344.    | DLC_RESOLVE_C        |                     | SENT_EX              |
  2345.    +----------------------+---------------------+----------------------+
  2346.  
  2347.    SENT_EX is entered when the DLSw has issued a CANUREACH_ex message to
  2348.    locate a MAC address.  This state is exited when a remote DLSw
  2349.    returns a matching ICANREACH_ex, or after an implementation defined
  2350.    timeout. DLC_RESOLVE events received in this state correspond to TEST
  2351.  
  2352.  
  2353.  
  2354. Wells & Bartky                                                 [Page 42]
  2355.  
  2356. RFC 1795                  Data Link Switching                 April 1995
  2357.  
  2358.  
  2359.    retries by the origin DLC station and are absorbed.
  2360.  
  2361.    An implementation may choose whether to handle explorer frame
  2362.    crossover either by using entirely separate FSM instances and simply
  2363.    allowing both ends to issue TEST frames, or by detecting a reverse
  2364.    CANUREACH_ex frame here and issuing an ICANREACH_ex message and
  2365.    DLC_RESOLVE_R action.
  2366.  
  2367. 5.4.1.3  RECEIVED_EX State
  2368.  
  2369.    +----------------------+---------------------+----------------------+
  2370.    |        Event         |      Action(s)      |      Next State      |
  2371.    +----------------------+---------------------+----------------------+
  2372.    | Receive CANUREACH_ex | Optionally update   | RECEIVED_EX          |
  2373.    |                      | cache               |                      |
  2374.    +----------------------+---------------------+----------------------+
  2375.    | Receive ICANREACH_ex |                     | RECEIVED_EX          |
  2376.    +----------------------+---------------------+----------------------+
  2377.    | DLC_RESOLVED         | Send ICANREACH_ex   | RESET                |
  2378.    |                      | Optionally update   |                      |
  2379.    |                      | cache               |                      |
  2380.    +----------------------+---------------------+----------------------+
  2381.  
  2382.    RECEIVED_EX is entered when the DLSw has received a CANUREACH_ex from
  2383.    a remote DLSw and has issued a DLC_RESOLVE to locate the MAC address.
  2384.    This state is exited when the DLC_RESOLVED response is received, or
  2385.    after an implementation defined timeout.
  2386.  
  2387.    If the target MAC is located, the DLSw must reply to the first
  2388.    received CANUREACH_ex that caused the move to this state.  If
  2389.    additional CANUREACH_ex messages are received in this state from
  2390.    other remote DLSw partners, the DLSw may optionally reply to these
  2391.    messages too but it is not required to do so.
  2392.  
  2393.    An implementation may choose whether to handle explorer frame
  2394.    crossover either by using entirely separate FSM instances and simply
  2395.    allowing both ends to issue TEST frames, or by detecting such a
  2396.    reverse DLC_RESOLVE_C event here and issuing an ICANREACH_ex message
  2397.    and DLC_RESOLVE_R action.
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410. Wells & Bartky                                                 [Page 43]
  2411.  
  2412. RFC 1795                  Data Link Switching                 April 1995
  2413.  
  2414.  
  2415. 5.4.2  NETBIOS_NQ/NR Explorer FSM
  2416.  
  2417.    The FSM described below is used to handle explorer frames routed by
  2418.    NetBIOS names  There is one instance of this FSM for each unique
  2419.    combination of Source Name, Destination Name, Data 2 field and
  2420.    Response Correlator.
  2421.  
  2422.    State Name            Description
  2423.    ----------            -----------
  2424.    RESET                 The initial state.
  2425.  
  2426.    SENT_EX               Local DLSw has issued an explorer
  2427.                          message
  2428.  
  2429.    RECEIVED_EX           Local DLSw has received an explorer
  2430.                          message
  2431.  
  2432.    SENT_REC_EX           An explorer frame has been both sent
  2433.                          and received for the same (potential)
  2434.                          NetBIOS circuit.
  2435.  
  2436. 5.4.2.1  RESET State
  2437.  
  2438.    +----------------------+---------------------+----------------------+
  2439.    |        Event         |      Action(s)      |      Next State      |
  2440.    +----------------------+---------------------+----------------------+
  2441.    | Receive NETBIOS_NQ_ex| DLC_DGRM(NAME_QUERY)| RECEIVED_EX          |
  2442.    |                      | Optionally update   |                      |
  2443.    |                      | cache.              |                      |
  2444.    +----------------------+---------------------+----------------------+
  2445.    | Receive NETBIOS_NR_ex| Optionally update   | RESET                |
  2446.    |                      | cache               |                      |
  2447.    +----------------------+---------------------+----------------------+
  2448.    | DLC_DGRM (NAME_QUERY)| Send NETBIOS_NQ_ex  | SENT_EX              |
  2449.    +----------------------+---------------------+----------------------+
  2450.  
  2451.    The RESET state is the initial state for the NETBIOS_NQ/NR explorer
  2452.    FSM. It is exited when the DLC receives either a NETBIOS_NQ_ex or a
  2453.    DLC_DGRM containing a NetBIOS NAME_QUERY frame.  If a NETBIOS_NQ_ex
  2454.    message is received, the NAME_QUERY is propagated to the DLC and this
  2455.    FSM moves to state RECEIVED_EX.  If a NetBIOS NAME_QUERY frame is
  2456.    received, the NETBIOS_NQ_ex is propagated either to the appropriate
  2457.    DLSw partners (see below), and this FSM moves to state SENT_EX.
  2458.  
  2459.    Unlike SNA traffic where the CANUREACH_ex/ICANREACH_ex exchange can
  2460.    be omitted if the MAC location is already cached,
  2461.    NETBIOS_NQ_ex/NETBIOS_NR_ex frames must always be issued during
  2462.    NetBIOS session setup in order that the NetBIOS session numbers are
  2463.  
  2464.  
  2465.  
  2466. Wells & Bartky                                                 [Page 44]
  2467.  
  2468. RFC 1795                  Data Link Switching                 April 1995
  2469.  
  2470.  
  2471.    exchanged correctly between the DLC end stations.  If the location of
  2472.    a NetBIOS name is known from cached data, the NETBIOS_NQ_ex need only
  2473.    be issued to the cached DLSw partners.  Otherwise the NETBIOS_NQ_ex
  2474.    should be issued to all partners that support NetBIOS.
  2475.  
  2476. 5.4.2.2  SENT_EX State
  2477.  
  2478.    +----------------------+---------------------+----------------------+
  2479.    |        Event         |      Action(s)      |      Next State      |
  2480.    +----------------------+---------------------+----------------------+
  2481.    | Receive NETBIOS_NQ_ex| DLC_DGRM(NAME_QUERY)| SENT_REC_EX          |
  2482.    |                      | Optionally update   |                      |
  2483.    |                      | cache               |                      |
  2484.    +----------------------+---------------------+----------------------+
  2485.    | Receive NETBIOS_NR_ex| DLC_DGRM(NAME_RECOG)| RESET                |
  2486.    |                      | Optionally update   |                      |
  2487.    |                      | cache               |                      |
  2488.    +----------------------+---------------------+----------------------+
  2489.    | DLC_DGRM (NAME_QUERY)| Send NETBIOS_NQ_ex  | SENT_EX              |
  2490.    | (different local     | Optionally update   |                      |
  2491.    |  session number than | cache               |                      |
  2492.    |  existing searches)  |                     |                      |
  2493.    +----------------------+---------------------+----------------------+
  2494.  
  2495.    SENT_EX is entered when the local DLSw issues a NETBIOS_NQ_ex to its
  2496.    remote DLSw partners.  This state is exited when a NETBIOS_NR_ex is
  2497.    received from a remote DLSw, or if a matching NETBIOS_NQ_ex is
  2498.    received from a remote DLSw (i.e., a NETBIOS_NQ_ex crossover case).
  2499.    If the local NetBIOS end station issues a NAME_QUERY with a different
  2500.    session number from any previous NAME_QUERY for this search, the
  2501.    NAME_QUERY is propagated to the DLSw partners to ensure that the
  2502.    exchange of NetBIOS session numbers is handled correctly.
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522. Wells & Bartky                                                 [Page 45]
  2523.  
  2524. RFC 1795                  Data Link Switching                 April 1995
  2525.  
  2526.  
  2527. 5.4.2.3  RECEIVED_EX State
  2528.  
  2529.    +----------------------+---------------------+----------------------+
  2530.    |        Event         |      Action(s)      |      Next State      |
  2531.    +----------------------+---------------------+----------------------+
  2532.    | Receive NETBIOS_NQ_ex| DLC_DGRM(NAME_QUERY)| RECEIVED_EX          |
  2533.    |                      | Optionally update   |                      |
  2534.    |                      | cache               |                      |
  2535.    +----------------------+---------------------+----------------------+
  2536.    | Receive NETBIOS_NR_ex|                     | RECEIVED_EX          |
  2537.    +----------------------+---------------------+----------------------+
  2538.    | DLC_DGRM (NAME_QUERY)| Send NETBIOS_NQ_ex  | SENT_REC_EX          |
  2539.    |                      | Optionally update   |                      |
  2540.    |                      | cache               |                      |
  2541.    +----------------------+---------------------+----------------------+
  2542.    | DLC_DGRM (NAME_RECOG)| Send NETBIOS_NR_ex  | RESET                |
  2543.    |                      | Optionally update   |                      |
  2544.    |                      | cache               |                      |
  2545.    +----------------------+---------------------+----------------------+
  2546.  
  2547.    RECEIVED_EX is entered when the local DLSw receives a NETBIOS_NQ_ex
  2548.    message from a remote DLSw.  This state is exited when a
  2549.    NAME_RECOGNIZED NetBIOS frame is received from the DLC, completing
  2550.    the query, or when a matching NAME_QUERY is received from DLC (i.e.,
  2551.    NAME_QUERY crossover).
  2552.  
  2553. 5.4.2.4  SENT_REC_EX State
  2554.  
  2555.    +----------------------+---------------------+----------------------+
  2556.    |        Event         |      Action(s)      |      Next State      |
  2557.    +----------------------+---------------------+----------------------+
  2558.    | Receive NETBIOS_NQ_ex| DLC_DGRM(NAME_QUERY)| SENT_REC_EX          |
  2559.    |                      | Optionally update   |                      |
  2560.    |                      | cache               |                      |
  2561.    +----------------------+---------------------+----------------------+
  2562.    | Receive NETBIOS_NR_ex| DLC_DGRM(NAME_RECOG)| RECEIVED_EX          |
  2563.    |                      | Optionally update   |                      |
  2564.    |                      | cache               |                      |
  2565.    +----------------------+---------------------+----------------------+
  2566.    | DLC_DGRM (NAME_QUERY)| Send NETBIOS_NQ_ex  | SENT_REC_EX          |
  2567.    | (different local     | Optionally update   |                      |
  2568.    |  session number than | cache               |                      |
  2569.    |  existing searches)  |                     |                      |
  2570.    +----------------------+---------------------+----------------------+
  2571.    | DLC_DGRM (NAME_RECOG)| Send NETBIOS_NR_ex  | SENT_EX              |
  2572.    |                      | Optionally update   |                      |
  2573.    |                      | cache               |                      |
  2574.    +----------------------+---------------------+----------------------+
  2575.  
  2576.  
  2577.  
  2578. Wells & Bartky                                                 [Page 46]
  2579.  
  2580. RFC 1795                  Data Link Switching                 April 1995
  2581.  
  2582.  
  2583.    This state is required if an implementation wishes to manage NQ/NR
  2584.    crossover cases from a single FSM instance by detecting 'opposite'
  2585.    NAME_QUERY attempts between the same two NetBIOS names.  If separate
  2586.    FSM instances are used instead, this state is not required and the
  2587.    transitions to it from other states can be removed.
  2588.  
  2589.    SENT_RCV_EX is exited when the NAME_QUERY search in either direction
  2590.    is resolved.  If the local NetBIOS end station issues a NAME_QUERY
  2591.    with a different session number from any previous NAME_QUERY it has
  2592.    issued for this search, the NAME_QUERY is propagated to the DLSw
  2593.    partners to ensure that the exchange of NetBIOS session numbers is
  2594.    correctly handled.
  2595.  
  2596. 5.4.2.5  NetBIOS Session Numbers
  2597.  
  2598.    NetBIOS NAME_QUERY and NAME_RECOGNIZED frames exchange NetBIOS session
  2599.    numbers between the end stations.  For correct NetBIOS operation over
  2600.    DLSw, it is important that all SSP NETBIOS_NQ_ex frames received by a
  2601.    DLSw cause NetBIOS NAME_QUERY frames to flow on the LAN with the new
  2602.    session number from the NETBIOS_NQ_ex.  These frames cannot be replied
  2603.    to from a cache of locally available NetBIOS names in the same way that
  2604.    MAC addresses and CANUREACH_ex messages can be handled.
  2605.  
  2606.    Also, NAME_QUERY messages are normally retried several times on the LAN.
  2607.    The generation and absorption of such frames is outside the scope of the
  2608.    FSM defined above.
  2609.  
  2610. 6.  Protocol Flow Diagrams
  2611.  
  2612.    The Switch-to-Switch Protocol is used to setup and take down circuits
  2613.    between a pair of Data Link Switches.  Once a circuit is established,
  2614.    the end stations on the local networks can employ LLC Type 1
  2615.    (connectionless UI frames) protocols end-to-end.  In addition, the end
  2616.    systems can establish an end-to-end connection for support of LLC Type 2
  2617.    (connection oriented I frames) protocols (Type 2 I frames go end-to-end,
  2618.    supervisory frames are handled locally).
  2619.  
  2620.    The term, Data Link, is used in this document to refer to both a
  2621.    "logical data link" when supporting Type 1 LLC services, and a "data
  2622.    link connection" when supporting Type 2 LLC services.  In both cases,
  2623.    the Data Link is identified by the Data Link ID defined in section 3.2.
  2624.  
  2625.    NOTE:  THIS SECTION CONTAINS EXAMPLES ONLY.  IT CANNOT AND DOES NOT SHOW
  2626.    ALL POSSIBLE VARIATIONS AND OPTIONS ON PROTOCOL FLOWS FOR SNA/SDLC, SSP,
  2627.    AND LLC PROTOCOLS.
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634. Wells & Bartky                                                 [Page 47]
  2635.  
  2636. RFC 1795                  Data Link Switching                 April 1995
  2637.  
  2638.  
  2639. 6.1  Connect Protocols
  2640.  
  2641.    The two basic startup flows from a pure FSM perspective are shown below.
  2642.    The first flow is a startup involving XIDs and the second is one without
  2643.    XIDs.
  2644.  
  2645. Flow #1 - DLSw Startup With XIDs
  2646.  ======                            ___                           ======
  2647.  |    |        ---------        __/   \__       ---------        |    |
  2648.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2649.  ======        |   |   |      <  Network  >     |   |   |        ======
  2650. /______\       ---------       \__     __/      ---------       /______\
  2651.  Origin       Origin DLSw         \___/        Target DLSw      Target
  2652.  Station        partner                          partner        Station
  2653.  
  2654.               disconnected                    disconnected
  2655.  
  2656.               DLC_RESOLVE_C   CANUREACH_ex
  2657.               ----------->    ----------->
  2658.               DLC_RESOLVE_R     ICANREACH_ex
  2659.                <-----------     <-----------
  2660.  
  2661.               DLC_XID         CANUREACH_cs    DLC_START_DL
  2662.               ----------->    ----------->    ----------->
  2663.               circuit_start                   resolve_pending
  2664.  
  2665.                                 ICANREACH_cs    DLC_DL_STARTED
  2666.                                 <-----------    <-----------
  2667.           circuit_established                 circuit_pending
  2668.                               REACH_ACK
  2669.                               ----------->   circuit_established
  2670.  
  2671.                               XIDFRAME        DLC_XID
  2672.                               ----------->    ----------->
  2673.  
  2674.                      DLC_XID        XIDFRAME         DLC_XID
  2675.                 <-----------    <-----------    <-----------
  2676.               DLC_XID         XIDFRAME        DLC_XID
  2677.               ----------->    ----------->    ----------->
  2678.  
  2679.                  DLC_XIDs       XIDFRAMEs        DLC_XIDs
  2680.               <------------>  <------------>  <------------>
  2681.  
  2682.               DLC_CONTACTED   CONTACT         DLC_CONTACT
  2683.               ----------->    ----------->    ----------->
  2684.               connect_pending                 contact_pending
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690. Wells & Bartky                                                 [Page 48]
  2691.  
  2692. RFC 1795                  Data Link Switching                 April 1995
  2693.  
  2694.  
  2695.                  DLC_CONTACT       CONTACTED    DLC_CONTACTED
  2696.                 <-----------    <-----------    <-----------
  2697.                  connected                       connected
  2698.  
  2699.                 DLC_INFOs        IFRAMEs        DLC_INFOs
  2700.               <------------>  <------------>  <------------>
  2701.  
  2702.    Mapping LAN events to the DLC events and actions on Flow #1 produces
  2703.    the following flows shown below:
  2704.  
  2705.  ======                            ___                           ======
  2706.  |    |        ---------        __/   \__       ---------        |    |
  2707.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2708.  ======        |   |   |      <  Network  >     |   |   |        ======
  2709. /______\       ---------       \__     __/      ---------       /______\
  2710.  Origin       Origin DLSw         \___/        Target DLSw      Target
  2711.  Station        partner                          partner        Station
  2712.  
  2713.               disconnected                    disconnected
  2714.  
  2715. TEST_cmd      DLC_RESOLVE_C    CANUREACH_ex               TEST_cmd
  2716. ----------->  ----------->     ----------->               ---------->
  2717.    TEST_rsp   DLC_RESOLVE_R     ICANREACH_ex                 TEST_rsp
  2718.  <---------    <-----------   <-----------             <-----------
  2719. null XID      DLC_XID          CANUREACH_cs    DLC_START_DL
  2720. ----------->  ----------->     ----------->    ----------->
  2721.               circuit_start                   resolve_pending
  2722.  
  2723.                                 ICANREACH_cs    DLC_DL_STARTED
  2724.                                 <-----------    <-------------
  2725.            circuit_established                circuit_pending
  2726.                               REACH_ACK
  2727.                               ----------->  circuit_established
  2728.  
  2729.                               XIDFRAME         DLC_XID       null XID
  2730.                               ----------->     --------->    -------->
  2731.         XID        DLC_XID        XIDFRAME         DLC_XID          XID
  2732.   <--------   <-----------    <-----------    <-----------    <--------
  2733.     XIDs         DLC_XIDs      XIDFRAMEs        DLC_XIDs         XIDs
  2734. <---------->  <---------->  <------------>  <------------>  <--------->
  2735. SABME         DLC_CONTACTED   CONTACT         DLC_CONTACT     SABME
  2736. ----------->  ----------->    ----------->    ----------->    -------->
  2737.               connect_pending                 contact_pending
  2738.  
  2739.           UA     DLC_CONTACT     CONTACTED    DLC_CONTACTED          UA
  2740.   <---------   <-----------   <-----------    <-----------    <--------
  2741.                   connected                        connected
  2742.  
  2743.  
  2744.  
  2745.  
  2746. Wells & Bartky                                                 [Page 49]
  2747.  
  2748. RFC 1795                  Data Link Switching                 April 1995
  2749.  
  2750.  
  2751.   IFRAMEs       DLC_INFOs        IFRAMEs        DLC_INFOs       IFRAMEs
  2752. <---------->  <----------->  <------------>  <------------>  <-------->
  2753.  
  2754. Those implementations that prefer to respond to the SABME immediately
  2755. could use the same events to do that:
  2756.  
  2757. SABME         DLC_CONTACTED   CONTACT         DLC_CONTACT     SABME
  2758. ----------->  ----------->    ----------->    ----------->    -------->
  2759.           UA  connect_pending                 contact_pending
  2760.   <---------
  2761. RR
  2762. ----------->
  2763.          RNR
  2764.   <---------
  2765.  
  2766.           RR    DLC_CONTACT       CONTACTED    DLC_CONTACTED          UA
  2767.   <---------   <-----------    <-----------    <-----------    <--------
  2768.                  connected                        connected
  2769.  
  2770.    IFRAMEs      DLC_INFOs        IFRAMEs        DLC_INFOs      IFRAMEs
  2771. <---------->  <------------>  <------------>  <------------>  <-------->
  2772.  
  2773. Flow #2 - DLSw Startup Without XIDs (circuit setup)
  2774.  
  2775.  ======                            ___                           ======
  2776.  |    |        ---------        __/   \__       ---------        |    |
  2777.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2778.  ======        |   |   |      <  Network  >     |   |   |        ======
  2779. /______\       ---------       \__     __/      ---------       /______\
  2780.  Origin       Origin DLSw         \___/        Target DLSw      Target
  2781.  Station        partner                          partner        Station
  2782.  
  2783.               disconnected                    disconnected
  2784.  
  2785.               DLC_CONTACTED   CANUREACH_cs    DLC_START_DL
  2786.               ----------->    ----------->    ----------->
  2787.               circuit_start                   resolve_pending
  2788.  
  2789.                                 ICANREACH_cs    DLC_DL_STARTED
  2790.                                 <-----------    <-----------
  2791.           circuit_established                 circuit_pending
  2792.                               REACH_ACK
  2793.                               ----------->   circuit_established
  2794.  
  2795.                               CONTACT         DLC_CONTACT
  2796.                               ----------->    ----------->
  2797.               connect_pending                 contact_pending
  2798.  
  2799.  
  2800.  
  2801.  
  2802. Wells & Bartky                                                 [Page 50]
  2803.  
  2804. RFC 1795                  Data Link Switching                 April 1995
  2805.  
  2806.  
  2807.                  DLC_CONTACT       CONTACTED    DLC_CONTACTED
  2808.                 <-----------    <-----------    <-----------
  2809.                  connected                       connected
  2810.  
  2811.                 DLC_INFOs        IFRAMEs        DLC_INFOs
  2812.               <------------>  <------------>  <------------>
  2813.  
  2814.    Mapping LAN events to the DLC events and actions on Flow #2 (and
  2815.    adding a NETBIOS_NQ and NETBIOS_NR_ex) produces:
  2816.  
  2817.  ======                            ___                           ======
  2818.  |    |        ---------        __/   \__       ---------        |    |
  2819.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2820.  ======        |   |   |      <  Network  >     |   |   |        ======
  2821. /______\       ---------       \__     __/      ---------       /______\
  2822.  Origin       Origin DLSw         \___/        Target DLSw      Target
  2823.  Station        partner                          partner        Station
  2824.  
  2825.               disconnected                     disconnected
  2826.  
  2827. NAME_QUERY    DLC_DGRM        NETBIOS_NQ_ex   DLC_DGRM       NAME_QUERY
  2828. ----------->  ----------->    ----------->    ----------->   --------->
  2829.  
  2830.    NAME_RECOG    DLC_DGRM      NETBIOS_NR_ex     DLC_DGRM    NAME_RECOG
  2831.  <-----------  <------------   <-----------    <-----------  <---------
  2832.  
  2833. SABME         DLC_CONTACTED   CANUREACH_cs    DLC_START_DL
  2834. ----------->  ----------->    ----------->    ----------->
  2835.                circuit_start                 resolve_pending
  2836.  
  2837.                                 ICANREACH_cs    DLC_DL_STARTED
  2838.                                 <-----------    <-----------
  2839.             circuit_established                circuit_pending
  2840.                               REACH_ACK
  2841.                               ----------->   circuit_established
  2842.  
  2843.                               CONTACT         DLC_CONTACT     SABME
  2844.                               ----------->    ----------->    --------->
  2845.              connect_pending                 contact_pending
  2846.  
  2847.           UA   DLC_CONTACT       CONTACTED    DLC_CONTACTED           UA
  2848.   <---------  <-----------    <-----------    <-----------    <---------
  2849.                 connected                       connected
  2850.  
  2851.    IFRAMEs       DLC_INFOs       IFRAMEs        DLC_INFOs       IFRAMEs
  2852. <------------> <------------> <------------>  <------------>  <-------->
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858. Wells & Bartky                                                 [Page 51]
  2859.  
  2860. RFC 1795                  Data Link Switching                 April 1995
  2861.  
  2862.  
  2863.    In keeping with a paradigm of 'DLSw is a big 802.2 LAN', all other
  2864.    DLC types (SDLC for now, QLLC, channel, or whatever in the future)
  2865.    would be handled by a 'DLC transformation layer' that would transform
  2866.    the specific protocol's events into the appropriate DLSw DLC events
  2867.    and DLSw DLC actions into the appropriate protocol actions.  The XIDs
  2868.    that flow in the SSP XIDFRAME should stay 802.2ish (i.e., ABM bit
  2869.    set) and leave it up to the DLC transformation layer to suit the XID
  2870.    to its particular DLC type.
  2871.  
  2872.    Here is an example of a leased SDLC PU 2.0 device as the origin
  2873.    station. It should use Flow #2 since it is not known if the other
  2874.    side is a LAN, a switched line or a leased line.
  2875.  
  2876.  ======                            ___                           ======
  2877.  |    |        ---------        __/   \__       ---------        |    |
  2878.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2879.  ======        |   |   |      <  Network  >     |   |   |        ======
  2880. /______\       ---------       \__     __/      ---------       /______\
  2881.  Origin       Origin DLSw         \___/        Target DLSw      Target
  2882.  Station        partner                          partner        Station
  2883.  
  2884.               disconnected                     disconnected
  2885.  
  2886. implementer's  DLC_RESOLVE_C   CANUREACH_ex
  2887. choice (power  ----------->    ----------->
  2888. up, configuration
  2889. change,        DLC_RESOLVE_R   ICANREACH_ex
  2890. never,          <-----------    <-----------
  2891. connect timer,etc.)
  2892.  
  2893. PU 2.0 is
  2894. configured
  2895. in DLSw to    DLC_XID(null)   CANUREACH_cs    DLC_START_DL
  2896. call in       ----------->    ----------->    ----------->
  2897.               circuit_start                   resolve_pending
  2898.  
  2899.                                 ICANREACH_cs   DLC_DL_STARTED
  2900.                                 <-----------   <-----------
  2901.            circuit_established                circuit_pending
  2902.                                 REACH_ACK
  2903.                                 ----------->   circuit_established
  2904.  
  2905.                               XIDFRAME        DLC_XID
  2906.                               ----------->    ----------->
  2907.  
  2908.                     DLC_XID        XIDFRAME         DLC_XID
  2909. respond with   <-----------    <-----------    <-----------
  2910. XID configured
  2911.  
  2912.  
  2913.  
  2914. Wells & Bartky                                                 [Page 52]
  2915.  
  2916. RFC 1795                  Data Link Switching                 April 1995
  2917.  
  2918.  
  2919. for station or
  2920. forward XID to
  2921. station and
  2922. send response  DLC_XID        XIDFRAME        DLC_XID
  2923.                ----------->   ----------->    ----------->
  2924.  
  2925.         SNRM    DLC_CONTACT       CONTACT      DLC_CONTACTED
  2926.   <---------   <-----------    <-----------    <------------
  2927.               contact_pending                    connect_pending
  2928.  
  2929. UA            DLC_CONTACTED    CONTACTED       DLC_CONTACT
  2930. ---------->    ----------->    ----------->    ----------->
  2931.                 connected                       connected
  2932.  
  2933.    IFRAMEs       DLC_INFOs        IFRAMEs        DLC_INFOs
  2934. <----------->  <------------>  <------------>  <------------>
  2935.  
  2936.    Here is an example of a switched SDLC PU 2.0 device as the origin
  2937.    station.
  2938.  
  2939.  ======                            ___                           ======
  2940.  |    |        ---------        __/   \__       ---------        |    |
  2941.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2942.  ======        |   |   |      <  Network  >     |   |   |        ======
  2943. /______\       ---------       \__     __/      ---------       /______\
  2944.  Origin       Origin DLSw         \___/        Target DLSw      Target
  2945.  Station        partner                          partner        Station
  2946.  
  2947.               disconnected                     disconnected
  2948.  
  2949. implementer's  DLC_RESOLVE_C   CANUREACH_ex
  2950. choice (power  ----------->    ----------->
  2951. up, configuration
  2952. change,        DLC_RESOLVE_R   ICANREACH_ex
  2953. never,          <-----------    <-----------
  2954. connect timer,etc.)
  2955.  
  2956. XID(null)     DLC_XID(null)   CANUREACH_cs    DLC_START_DL
  2957. ----------->  ----------->    ----------->    ----------->
  2958.               circuit_start                   resolve_pending
  2959.  
  2960.                                 ICANREACH_cs    DLC_DL_STARTED
  2961.                                 <-----------    <-----------
  2962.             circuit_established                 circuit_pending
  2963.                                 REACH_ACK
  2964.                                 ----------->   circuit_established
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970. Wells & Bartky                                                 [Page 53]
  2971.  
  2972. RFC 1795                  Data Link Switching                 April 1995
  2973.  
  2974.  
  2975.                                 XIDFRAME      DLC_XID
  2976.                                 ----------->  ----------->
  2977.          XID        DLC_XID         XIDFRAME         DLC_XID
  2978.   <---------   <-----------     <-----------    <-----------
  2979. XID           DLC_XID         XIDFRAME        DLC_XID
  2980. --------->    ----------->    ----------->    ----------->
  2981.  
  2982.         SNRM    DLC_CONTACT       CONTACT      DLC_CONTACTED
  2983.   <---------   <-----------    <-----------    <-----------
  2984.               contact_pending                 connect_pending
  2985.  
  2986. UA            DLC_CONTACTED   CONTACTED       DLC_CONTACT
  2987. --------->    ----------->    ----------->    ----------->
  2988.                  connected                      connected
  2989.  
  2990.    IFRAMEs      DLC_INFOs        IFRAMEs        DLC_INFOs
  2991. <---------->  <------------>  <------------>  <------------>
  2992.  
  2993.    Here is an example of a leased SDLC PU 2.0 device as the target
  2994.    station.
  2995.  
  2996.  ======                            ___                           ======
  2997.  |    |        ---------        __/   \__       ---------        |    |
  2998.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  2999.  ======        |   |   |      <  Network  >     |   |   |        ======
  3000. /______\       ---------       \__     __/      ---------       /______\
  3001.  Origin       Origin DLSw         \___/        Target DLSw       Target
  3002.  Station        partner                          partner         Station
  3003.                                                                  (SDLC)
  3004.               disconnected                    disconnected
  3005.  
  3006.               DLC_RESOLVE_C   CANUREACH_ex
  3007.               ----------->    ----------->   reply if virtual MAC/SAP
  3008.                                              for SDLC station is
  3009.                                              configured, if SDLC
  3010.                                              station responds to
  3011.               DLC_RESOLVE_R    ICANREACH_ex  TEST/SNRM/DISC, etc.
  3012.                <-----------    <-----------
  3013.               DLC_XID         CANUREACH_cs    DLC_START_DL    SNRM
  3014.               ----------->    ----------->    ----------->    --------->
  3015.               circuit_start                   resolve_pending
  3016.  
  3017.                                 ICANREACH_cs    DLC_DL_STARTED        UA
  3018.                                 <-----------    <-----------    <-------
  3019.           circuit_established                 circuit_pending
  3020.                                                               RNR
  3021.                               REACH_ACK                       --------->
  3022.                               ----------->   circuit_established
  3023.  
  3024.  
  3025.  
  3026. Wells & Bartky                                                 [Page 54]
  3027.  
  3028. RFC 1795                  Data Link Switching                 April 1995
  3029.  
  3030.  
  3031.                               XIDFRAME        DLC_XID
  3032.                               ----------->    -----------> respond with
  3033.                                                            XID configured
  3034.                                                            for station
  3035.                                                            or forward
  3036.                                                            XID to
  3037.                                                            station and
  3038.                                                            send
  3039.                    DLC_XID        XIDFRAME         DLC_XID response
  3040.               <-----------    <-----------    <-----------
  3041.               DLC_CONTACTED   CONTACT         DLC_CONTACT     RR
  3042.               ----------->    ----------->    ----------->    --------->
  3043.              connect_pending                contact_pending
  3044.  
  3045.                  DLC_CONTACT       CONTACTED    DLC_CONTACTED
  3046.                 <-----------    <-----------    <-----------
  3047.                 connected                        connected
  3048.  
  3049.                 DLC_INFOs        IFRAMEs        DLC_INFOs       IFRAMEs
  3050.               <------------>  <------------>  <------------>  <------->
  3051.  
  3052.    Here is an example of a switched SDLC PU 2.0 device as the target
  3053.    station.
  3054.  
  3055.  ======                            ___                           ======
  3056.  |    |        ---------        __/   \__       ---------        |    |
  3057.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  3058.  ======        |   |   |      <  Network  >     |   |   |        ======
  3059. /______\       ---------       \__     __/      ---------       /______\
  3060.  Origin       Origin DLSw         \___/        Target DLSw       Target
  3061.  Station        partner                          partner         Station
  3062.                                                                  (SDLC)
  3063.               disconnected                    disconnected
  3064.  
  3065.               DLC_RESOLVE_C   CANUREACH_ex
  3066.               ----------->    ----------->    reply if virtual MAC/SAP
  3067.                                               for SDLC station is
  3068.                                               configured, if SDLC
  3069.                                               station responds to
  3070.               DLC_RESOLVE_R     ICANREACH_ex  TEST/XID/SNRM/DISC, etc.
  3071.                <-----------     <-----------
  3072.               DLC_XID         CANUREACH_cs    DLC_START_DL    XID
  3073.               ----------->    ----------->    ----------->    --------->
  3074.               circuit_start                   resolve_pending
  3075.  
  3076.                                 ICANREACH_cs   DLC_DL_STARTED        XID
  3077.                                 <-----------   <-----------    <--------
  3078.           circuit_established                 circuit_pending
  3079.  
  3080.  
  3081.  
  3082. Wells & Bartky                                                 [Page 55]
  3083.  
  3084. RFC 1795                  Data Link Switching                 April 1995
  3085.  
  3086.  
  3087.                               REACH_ACK
  3088.                               ----------->   circuit_established
  3089.  
  3090.                                 XIDFRAME        DLC_XID
  3091.                                 ----------->    -----------> respond
  3092.                                                              with XID
  3093.                                                              received
  3094.                      DLC_XID        XIDFRAME        DLC_XID  above
  3095.                 <-----------    <-----------     <---------
  3096.              DLC_CONTACTED   CONTACT         DLC_CONTACT     SNRM
  3097.              ----------->    ----------->    ----------->    --------->
  3098.              connect_pending                  contact_pending
  3099.  
  3100.                 DLC_CONTACT       CONTACTED    DLC_CONTACTED          UA
  3101.                <-----------    <-----------    <-----------    <--------
  3102.                 connected                        connected
  3103.  
  3104.                 DLC_INFOs        IFRAMEs        DLC_INFOs       IFRAMEs
  3105.               <------------>  <------------>  <------------>  <-------->
  3106.  
  3107.    Here is an example of an SDLC T2.1 device as the target station.
  3108.    (SDLC T2.1 origin station would look just like the LAN T2.1 origin
  3109.    station)
  3110.  
  3111.  ======                            ___                           ======
  3112.  |    |        ---------        __/   \__       ---------        |    |
  3113.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  3114.  ======        |   |   |      <  Network  >     |   |   |        ======
  3115. /______\       ---------       \__     __/      ---------       /______\
  3116.  Origin       Origin DLSw         \___/        Target DLSw      Target
  3117.  Station        partner                          partner        Station
  3118.  
  3119.               disconnected                    disconnected
  3120.  
  3121.               DLC_RESOLVE_C   CANUREACH_ex
  3122.               ----------->    ----------->    implementer's choice
  3123.                                               (virtual MAC/SAP
  3124.                                                configured,
  3125.                                                check to see if station
  3126.                                                is powered up using
  3127.               DLC_RESOLVE_R     ICANREACH_ex   TEST/XID/DISC, etc.)
  3128.                <-----------     <-----------
  3129.               DLC_XID         CANUREACH_cs    DLC_START_DL    null XID
  3130.               ----------->    ----------->    ----------->    --------->
  3131.               circuit_start                   resolve_pending
  3132.  
  3133.                                 ICANREACH_cs    DLC_DL_STARTED       XID
  3134.                                 <-----------    <-----------    <-------
  3135.  
  3136.  
  3137.  
  3138. Wells & Bartky                                                 [Page 56]
  3139.  
  3140. RFC 1795                  Data Link Switching                 April 1995
  3141.  
  3142.  
  3143.           circuit_established                 circuit_pending
  3144.                               REACH_ACK
  3145.                               ----------->   circuit_established
  3146.                               XIDFRAME        DLC_XID
  3147.                               ----------->    ----------->  respond with
  3148.                                                             XID received
  3149.                      DLC_XID        XIDFRAME        DLC_XID above
  3150.                 <-----------    <-----------    <----------
  3151.                  DLC_XIDs       XIDFRAMEs        DLC_XIDs         XIDs
  3152.               <------------>  <------------>  <------------>  <-------->
  3153.               DLC_CONTACTED   CONTACT         DLC_CONTACT     SNRM
  3154.               ----------->    ----------->    ----------->    --------->
  3155.               connect_pending                 contact_pending
  3156.  
  3157.                  DLC_CONTACT       CONTACTED    DLC_CONTACTED         UA
  3158.                 <-----------    <-----------    <-----------    <-------
  3159.                 connected                        connected
  3160.  
  3161.                 DLC_INFOs        IFRAMEs        DLC_INFOs       IFRAMEs
  3162.               <------------>  <------------>  <------------>  <-------->
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194. Wells & Bartky                                                 [Page 57]
  3195.  
  3196. RFC 1795                  Data Link Switching                 April 1995
  3197.  
  3198.  
  3199. 6.2  Link Restart Protocols
  3200.  
  3201.    The following figure depicts the protocol flows that result from
  3202.    restarting the end-to-end connection.  This causes the Data Link
  3203.    Switches to terminate the existing connection and to enter the
  3204.    Circuit Established state awaiting the start of a new connection.
  3205.  
  3206.      Data Link   Data Link                     Data Link   Data Link
  3207.       Control     Switch                        Switch      Control
  3208.      ---------------------                     ---------------------
  3209.           +-----------+                             +-----------+
  3210.           | Connected |                             | Connected |
  3211.     SABME +-----------+                             +-----------+
  3212.    ----------->                 RESTART_DL
  3213.       DM           ------------------------------------->     DISC
  3214.    <-----------                                               -------->
  3215.                                                                UA
  3216.                          DL_RESTARTED (Case 1)              <--------
  3217.                    <-------------------------------------
  3218.           +-----------+                             +-----------+
  3219.           |Circuit Est|                             |Circuit Est|
  3220.           +-----------+                             +-----------+
  3221.                         ........... or ...........
  3222.     SABME
  3223.    ----------->           DL_RESTARTED (Case 2)
  3224.        UA          <-------------------------------------
  3225.    <-----------                                     +-----------+
  3226.                                                     |Circuit Est|
  3227.                                 CONTACT             +-----------+
  3228.       RNR           ------------------------------------>
  3229.    <----------
  3230.  
  3231.               Figure 5.  DLSw Link Restart Message Protocols
  3232.  
  3233.    Upon receipt of a SABME command from the origin station, the origin
  3234.    DLSw will send a RESTART_DL message to the target DLSw.  A DM
  3235.    response is also returned to the origin station and the data link is
  3236.    restarted.
  3237.  
  3238.    Upon receipt of the RESTART_DL message, the target DLSw will issue a
  3239.    DISC command to the target station.  The target station is expected
  3240.    to return a UA response.  The target DLSw will then restart its data
  3241.    link and send an DL_RESTARTED message back to the origin DLSw.
  3242.    During this exchange of messages, both Data Link Switches change
  3243.    states from Connected state to Circuit Established state.
  3244.  
  3245.    If the origin station now resends the SABME command, the origin DLSw
  3246.    will send a CONTACT message to the target DLSw.  If the SABME command
  3247.  
  3248.  
  3249.  
  3250. Wells & Bartky                                                 [Page 58]
  3251.  
  3252. RFC 1795                  Data Link Switching                 April 1995
  3253.  
  3254.  
  3255.    is received prior to the receipt of the DL_RESTARTED message (case 2
  3256.    in the figure), the CONNECT message is delayed until the DL_RESTARTED
  3257.    message is received.  The resulting protocol flows at this point
  3258.    parallel those given above for the connect sequence.
  3259.  
  3260. 6.3  Disconnect Protocols
  3261.  
  3262.    The following figure depicts the protocol flows that result from the
  3263.    end system terminating an existing connection.  Not only is the
  3264.    connection terminated, but the circuit between the Data Link Switches
  3265.    is taken down.
  3266.  
  3267.      Data Link  Data Link                      Data Link  Data Link
  3268.       Control    Switch                         Switch     Control
  3269.      --------------------                      --------------------
  3270.           +-----------+                             +-----------+
  3271.           | Connected |                             | Connected |
  3272.           +-----------+                             +-----------+
  3273.       DISC
  3274.    ---------->                  HALT_DL
  3275.        UA         ------------------------------------->      DISC
  3276.    <----------                                              --------->
  3277.                                                                UA
  3278.                                DL_HALTED                    <--------
  3279.                   <-------------------------------------
  3280.           +-----------+                             +-----------+
  3281.           |Disconnectd|                             |Disconnectd|
  3282.           +-----------+                             +-----------+
  3283.  
  3284.                           ......... or ..........
  3285.  
  3286.           +-----------+                             +-----------+
  3287.           | Connected |                             | Connected |
  3288.           +-----------+                             +-----------+
  3289.        DISC              TCP Connection Failure               DISC
  3290.    <--------     <------------------------------------>    --------->
  3291.         UA                                                     UA
  3292.     -------->                                               <--------
  3293.           +-----------+                             +-----------+
  3294.           |Disconnectd|                             |Disconnectd|
  3295.           +-----------+                             +-----------+
  3296.  
  3297.                Figure 6.  DLSw Disconnect Message Protocols
  3298.  
  3299.    Upon receipt of a DISC command from the origin station, the origin
  3300.    DLSw will reply with a UA response and issue a HALT_DL message to the
  3301.    target DLSw.  Upon receipt of the HALT_DL message, the target DLSw
  3302.    will send a DISC command to the target station.  The target station
  3303.  
  3304.  
  3305.  
  3306. Wells & Bartky                                                 [Page 59]
  3307.  
  3308. RFC 1795                  Data Link Switching                 April 1995
  3309.  
  3310.  
  3311.    will then respond with a UA response, causing the target DLSw to
  3312.    return a DL_HALTED message to the origin DLSw.  During this exchange
  3313.    of messages, both Data Link Switches change states from the Connected
  3314.    state to the Disconnected state.
  3315.  
  3316.    If the TCP connection between two Data Link Switches fails, all
  3317.    connections that are currently multiplexed on the failed TCP
  3318.    connection will be taken down.  This implies that both Data Link
  3319.    Switches will send DISC commands to all the local systems that are
  3320.    associated with the failed connections.  Upon sending the DISC
  3321.    command, the Data Link Switch will enter the DISCONNECTED state for
  3322.    each circuit.
  3323.  
  3324. 7.0  Capabilities Exchange Formats/Protocol
  3325.  
  3326.    The Data Link Switching Capabilities Exchange is a special DLSw
  3327.    Switch-to-Switch control message that describes the capabilities of
  3328.    the sending data link switch. This control message is sent after the
  3329.    switch-to-switch connection is established and optionally during run
  3330.    time if certain operational parameters have changed and need to be
  3331.    communicated to the partner switch.
  3332.  
  3333.    The actual contents of the Capabilities Exchange is in the data field
  3334.    following the SSP message header.  The Capabilities Exchange itself
  3335.    is formatted as a single General Data Stream (GDS) Variable with
  3336.    multiple type "LT" structured subfields.
  3337.  
  3338.    The SSP Message Header has the following fields set for the
  3339.    Capabilities Exchange:
  3340.  
  3341.    Offset   Field                 Value
  3342.    ------   -----                 -----
  3343.    0x00     Version Number        0x31
  3344.    0x01     Header Length         0x48 (decimal 72)
  3345.    0x02     Message Length        same as LL in GDS Variable
  3346.    0x14     Message Type          0x20 (CAP_EXCHANGE)
  3347.    0x16     Protocol Id           0x42
  3348.    0x17     Header Number         0x01
  3349.    0x23     Message Type          0x20 (CAP_EXCHANGE)
  3350.    0x38     Direction             0x01 for CapEx request
  3351.                                   0x02 for CapEx response
  3352.  
  3353.    Other fields in the SSP header are not referenced and should be set
  3354.    to zero.
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362. Wells & Bartky                                                 [Page 60]
  3363.  
  3364. RFC 1795                  Data Link Switching                 April 1995
  3365.  
  3366.  
  3367.    The DLSw Capabilities Exchange Request has the following overall
  3368.    format:
  3369.  
  3370.    +----+----+-----------------+
  3371.    | LL | ID | Control Vectors |
  3372.    +----+----+-----------------+
  3373.  
  3374.    0-1         Length, in binary, of the DLSw Capabilities
  3375.                Exchange
  3376.                Request GDS Variable.  The value of LL is
  3377.                the sum of the length of all fields in the
  3378.                GDS Variable (i.e., length of LL + length of ID
  3379.                + length of Control Vectors).
  3380.  
  3381.    2-3         GDS Id: 0x1520
  3382.  
  3383.    4-n         Control Vectors consisting of type LT structured
  3384.                subfields (i.e., the DLSw Capabilities Exchange
  3385.                Structured Subfields)
  3386.  
  3387.    Type LT structured subfields consist of a 1-byte length field (the
  3388.    "L"), a 1-byte type field (the "T") and n-bytes of data.  The length
  3389.    field includes itself as well as the structured subfield.  The
  3390.    structured subfield consists of the type field and data so the length
  3391.    is n + 2. This imposes a length restriction of 253 bytes on all data
  3392.    contained in a structured subfield.
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418. Wells & Bartky                                                 [Page 61]
  3419.  
  3420. RFC 1795                  Data Link Switching                 April 1995
  3421.  
  3422.  
  3423. 7.1  Control Vector Id Range
  3424.  
  3425.    Control Vector identifiers (i.e., Type) in the range of 0x80 through
  3426.    0xCF are reserved for use by the Data Link Switching standard.
  3427.  
  3428.    Control Vector identifiers (i.e., Type) in the range of 0xD0 through
  3429.    0xFD are used for vendor-specific purposes.
  3430.  
  3431.    Currently defined vectors are:
  3432.  
  3433.    Vector Description                       Hex Value
  3434.  
  3435.    Vendor Id Control Vector                 0x81
  3436.    DLSw Version Control Vector              0x82
  3437.    Initial Pacing Window Control Vector     0x83
  3438.    Version String Control Vector            0x84
  3439.    Mac Address Exclusivity Control Vector   0x85
  3440.    Supported SAP List Control Vector        0x86
  3441.    TCP Connections Control Vector           0x87
  3442.    NetBIOS Name Exclusivity Control Vector  0x88
  3443.    MAC Address List Control Vector          0x89
  3444.    NetBIOS Name List Control Vector         0x8A
  3445.    Vendor Context Control Vector            0x8B
  3446.    Reserved for future use                  0x8C - 0xCF
  3447.    Vendor Specific                          0xD0 - 0xFD
  3448.  
  3449. 7.2  Control Vector Order and Continuity
  3450.  
  3451.    Since their contents can greatly affect the parsing of the
  3452.    Capabilities Exchange GDS Variable, the required control vectors must
  3453.    occur first and appear in the following order:  Vendor Id, DLSw
  3454.    Version Number, Initial Pacing Window, Supported SAP List. The
  3455.    remainder of the Control Vectors can occur in any order.
  3456.  
  3457.    Control Vectors that can be repeated within the same message (e.g.,
  3458.    MAC Address List Control Vector and NetBIOS Name List Control Vector)
  3459.    are not necessarily adjacent.  It is advisable, but not required, to
  3460.    have the Exclusivity Control Vector occur prior to either of the
  3461.    above two vectors so that the use of the individual MAC addresses or
  3462.    NetBIOS names will be known prior to parsing them.
  3463.  
  3464.    Both the Vendor Context and Vendor Specific control vectors can be
  3465.    repeated.  If there are multiple instances of the Vendor Context
  3466.    control vector, the specified context remains in effect for all
  3467.    Vendor Specific control vectors until the next Vendor Context control
  3468.    vector is encountered in the Capabilities Exchange.
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474. Wells & Bartky                                                 [Page 62]
  3475.  
  3476. RFC 1795                  Data Link Switching                 April 1995
  3477.  
  3478.  
  3479. 7.3  Initial Capabilities Exchange
  3480.  
  3481.    Capabilities exchange is always the first SSP message sent on a new
  3482.    SSP connection between two DLSw switches.  This initial Capabilities
  3483.    Exchange is used to identify the DLSw version that each switch is
  3484.    running and other required information, plus details of any optional
  3485.    extensions that the switches are capable of supporting.
  3486.  
  3487.    If a DLSw receives an initial capabilities message that is
  3488.    incorrectly formatted or contains invalid or unsupported data that
  3489.    prevents correct interoperation with the partner DLSw, it should
  3490.    issue a Capabilities Exchange negative response.
  3491.  
  3492.    If a DLSw receives a negative response to its initial capabilities
  3493.    message, it should take down its TCP connections with the offended
  3494.    partner.
  3495.  
  3496.    Note:  Pre v1.0 DLSw implementations do not send or respond to
  3497.    capabilities messages and can be identified by the lack of
  3498.    capabilities exchange as the first message on a new SSP connnection.
  3499.    This document does not attempt to specify how to interoperate with
  3500.    back-level DLSw implementations.
  3501.  
  3502. 7.4  Run-Time Capabilities Exchange
  3503.  
  3504.    Capabilities exchange always occurs when the SSP connection is
  3505.    started between two DLSw switches.  Capabilities Exchange can also
  3506.    occur at run-time, typically when a configuration change is made.
  3507.  
  3508.    Support for run-time Capabilities Exchange is optional.  If a node
  3509.    does not support receiving/using Run-Time Capabilities Exchange and
  3510.    receives one, it should discard it quietly (not send back a negative
  3511.    response).  If a node supports receipt of run-time capabilities, it
  3512.    should send a positive or negative response as appropriate.  The
  3513.    receiver of a negative response to a run-time capabilities message is
  3514.    not required to take down its TCP connections with the offended
  3515.    partner.
  3516.  
  3517.    Run-time Capabilities Exchange can consist of one or more of the
  3518.    following control vectors.  Note that the control vectors required at
  3519.    start-up are not present in a run-time Capabilities Exchange.
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530. Wells & Bartky                                                 [Page 63]
  3531.  
  3532. RFC 1795                  Data Link Switching                 April 1995
  3533.  
  3534.  
  3535.         1. MAC Address Exclusivity CV,
  3536.         2. NetBIOS Name Exclusivity CV,
  3537.         3. MAC Address List CV,
  3538.         4. NetBIOS Name List CV,
  3539.         5. Supported SAP List CV,
  3540.         6. Vendor Context CV,
  3541.         7. Vendor Specific CVs
  3542.  
  3543.    A run-time capabilities exchange is a replacement operation.  As
  3544.    such, all pertinent MAC addresses and NetBIOS names must be specified
  3545.    in the run-time exchange. In addition, run-time changes in
  3546.    capabilities will not effect existing link station circuits.
  3547.  
  3548. 7.5  Capabilities Exchange Filtering Responsibilities
  3549.  
  3550.    Recipients of the SAP, MAC, and NetBIOS lists are not required to
  3551.    actually use them to filter traffic, etc., either initially or at
  3552.    run-time.
  3553.  
  3554. 7.6  DLSw Capabilities Exchange Structured Subfields
  3555.  
  3556.    The Capabilities Exchange Subfields are listed in the table below and
  3557.    are described in the following sections:
  3558.  
  3559.          Required                      Allowed @
  3560.     ID   @ Startup  Length  Repeatable* Runtime  Order  Content
  3561.    ====  =========  ======  ==========  =======  =====  ===============
  3562.    0x81     Y        0x05        N         N       1    Vendor ID
  3563.  
  3564.    0x82     Y        0x04        N         N       2    DLSw Version
  3565.  
  3566.    0x83     Y        0x04        N         N       3    Initial pacing
  3567.                                                         window
  3568.  
  3569.    0x84     N      >=0x02        N         N       5+   Version String
  3570.  
  3571.    0x85     N        0x03        N         Y       5+   MAC Address
  3572.                                                         Exclusivity
  3573.  
  3574.    0x86     Y        0x12        N         Y       4    Supported SAP
  3575.                                                         List
  3576.  
  3577.    0x87     N        0x03        N         N       5+   TCP Connections
  3578.  
  3579.    0x88     N        0x03        N         Y       5+   NetBIOS Name
  3580.                                                         Exclusivity
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586. Wells & Bartky                                                 [Page 64]
  3587.  
  3588. RFC 1795                  Data Link Switching                 April 1995
  3589.  
  3590.  
  3591.    0x89     N        0x0E        Y         Y       5+   MAC Address
  3592.                                                         List
  3593.  
  3594.    0x8A     N      <=0x13        Y         Y       5+   NetBIOS Name
  3595.                                                         List
  3596.  
  3597.    0x8B     N        0x05        Y         Y       5+   Vendor Context
  3598.  
  3599.    0xD0     N       varies       Y         Y       5+   Vendor Specific
  3600.  
  3601.    *Note: "Repeatable" means a Control Vector is repeatable within a single
  3602.    message.
  3603.  
  3604. 7.6.1  Vendor Id (0x81) Control Vector
  3605.  
  3606.    The Vendor Id control vector identifies the manufacturer's IEEE
  3607.    assigned Organizationally Unique Identifier (OUI) of the Data Link
  3608.    Switch sending the DLSw Capabilities Exchange.  The OUI is sent in
  3609.    non-canonical (Token-Ring) format.  This control vector is required
  3610.    and must be the first control vector.
  3611.  
  3612.    Offset  Length  Value  Contents
  3613.    ------  ------  -----  --------
  3614.       0       1    0x05   Length of the Vendor Id structured
  3615.                           subfield
  3616.  
  3617.       1       1    0x81   key = 0x81  that identifies this as the
  3618.                           Vendor Id structured subfield
  3619.  
  3620.      2-4      3           the 3-byte Organizationally Unique
  3621.                           Identifier (OUI) for the vendor
  3622.                           (non-canonical format)
  3623.  
  3624. 7.6.2  DLSw Version (0x82) Control Vector
  3625.  
  3626.    The DLSw Version control vector identifies the particular version of
  3627.    the DLSw standard supported by the sending Data Link Switch.  This
  3628.    control vector is required and must follow the Vendor Id Control
  3629.    Vector.
  3630.  
  3631.    Offset  Length  Value  Contents
  3632.    ------  ------  -----  --------
  3633.       0       1    0x04   Length of the Version String structured
  3634.                           subfield
  3635.  
  3636.       1       1    0x82   key = 0x82  that identifies this as the
  3637.                           DLSw Version structured subfield
  3638.  
  3639.  
  3640.  
  3641.  
  3642. Wells & Bartky                                                 [Page 65]
  3643.  
  3644. RFC 1795                  Data Link Switching                 April 1995
  3645.  
  3646.  
  3647.       2       1           the hexadecimal value representing the
  3648.                           DLSw standard Version number of the
  3649.                           sending Data Link Switch.
  3650.                             0x01 (indicates version 1 - closed pages)
  3651.  
  3652.       3       1           the hexadecimal value representing the
  3653.                           DLSw standard Release number of the
  3654.                           sending Data Link Switch.
  3655.                             0x00 (indicates release 0)
  3656.  
  3657. 7.6.3  Initial Pacing Window (0x83) Control Vector
  3658.  
  3659.    The Initial Pacing Window control vector specifies the initial value
  3660.    of the receive pacing window size for the sending Data Link Switch.
  3661.    This control vector is required and must follow the DLSw Version
  3662.    Control Vector.
  3663.  
  3664.    Offset  Length  Value  Contents
  3665.    ------  ------  -----  --------
  3666.       0       1    0x04   Length of the Initial Pacing Window
  3667.                           structured subfield
  3668.  
  3669.       1       1    0x83   key = 0x83  that identifies this
  3670.                           as the Initial Pacing Window
  3671.                           structured subfield
  3672.  
  3673.      2-3      2           the pacing window size, specified
  3674.                           in byte normal form..
  3675.  
  3676.    Note:  The pacing window size must be non-zero.
  3677.  
  3678. 7.6.4  Version String (0x84) Control Vector
  3679.  
  3680.    The Version String control vector identifies the particular version
  3681.    number of the sending Data Link Switch.  The format of the actual
  3682.    version string is vendor-defined.  This control vector is optional.
  3683.  
  3684.    Offset  Length  Value  Contents
  3685.    ------  ------  -----  --------
  3686.       0       1    0xn    Length of the Version String
  3687.                           structured subfield
  3688.  
  3689.       1       1    0x84   key = 0x84  that identifies
  3690.                           this as the Version String
  3691.                           structured subfield
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698. Wells & Bartky                                                 [Page 66]
  3699.  
  3700. RFC 1795                  Data Link Switching                 April 1995
  3701.  
  3702.  
  3703.      2-n     n-2          the ASCII string that identifies
  3704.                           the software version for the
  3705.                           sending DLSw.
  3706.  
  3707. 7.6.5  MAC Address Exclusivity (0x85) Control Vector
  3708.  
  3709.    The MAC Address Exclusivity control vector identifies how the MAC
  3710.    Address List control vector data is to be interpreted.  Specifically,
  3711.    this control vector identifies whether the MAC addresses in the MAC
  3712.    Address List control vectors are the only ones accessible via the
  3713.    sending Data Link Switch.
  3714.  
  3715.    If a MAC Address List control vector is specified and the MAC Address
  3716.    Exclusivity control vector is missing, then the MAC addresses are not
  3717.    assumed to be the only ones accessible via this switch.
  3718.  
  3719.    A node may specify that it supports no local MAC addresses by
  3720.    including in its capabilities the MAC Address List Exclusivity CV
  3721.    (with byte 2 == 0x01), and not including any instances of the MAC
  3722.    Address List CV.
  3723.  
  3724.    Offset  Length  Value  Contents
  3725.    ------  ------  -----  --------
  3726.       0       1    0x03   Length of the Exclusivity structured
  3727.                           subfield
  3728.  
  3729.       1       1    0x85   key = 0x85 that identifies this as the
  3730.                           MAC address Exclusivity structured
  3731.                           subfield
  3732.  
  3733.       2       1           an indicator of the relationship of the
  3734.                           MAC addresses to the sending Data Link
  3735.                           Switch.
  3736.                             0x00     the MAC addresses specified in
  3737.                                      this Capabilities Exchange
  3738.                                      can be accessed via this
  3739.                                      switch but are not the
  3740.                                      exclusive set (i.e., other
  3741.                                      entities are accessible in
  3742.                                      addition to the ones specified)
  3743.                             0x01     the MAC addresses specified in
  3744.                                      this Capabilities Exchange
  3745.                                      are the only ones accessible
  3746.                                      via this switch.
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754. Wells & Bartky                                                 [Page 67]
  3755.  
  3756. RFC 1795                  Data Link Switching                 April 1995
  3757.  
  3758.  
  3759. 7.6.6  SAP List Support (0x86) Control Vector
  3760.  
  3761.    The SAP List Support control vector identifies support for Logical
  3762.    Link Control SAPs (DSAPs and SSAPs) by the sending Data Link Switch.
  3763.    This is used by the DLSw that sent the SAP List Support control
  3764.    vector to indicate which SAPs can be used to support SNA and
  3765.    optionally NetBIOS traffic.  This may be used by the DLSw that
  3766.    receives the SAP list to filter explorer traffic (TEST, XID, or
  3767.    NetBIOS UI frames) from the DLSw state machine.  For SNA, a DLSw
  3768.    should set bits for all SAP values (SSAP or DSAP) that may be used
  3769.    for SNA traffic.  For NetBIOS support, the bit for SAP 0xF0 should be
  3770.    set (if not supported then the same bit should be cleared).
  3771.  
  3772.    Each bit in the SAP control vector data field represents a SAP as
  3773.    defined below.  This vector is required and must follow the Initial
  3774.    Pacing Window Control Vector.
  3775.  
  3776.    Offset  Length  Value  Contents
  3777.    ------  ------  -----  --------
  3778.       0       1     0x12  Length of the Supported SAP List structured
  3779.                           subfield
  3780.  
  3781.       1       1     0x86  key = 0x86 that identifies this as the
  3782.                           Supported SAP List structured subfield
  3783.  
  3784.      2-17    16           the 16-byte bit vector describing all
  3785.                           even numbered SAPs enabled.
  3786.  
  3787.                           Each Bit within the 16 byte bit vector will
  3788.                           indicate whether an even numbered SAP is
  3789.                           enabled (b'1') or disabled (b'0').
  3790.  
  3791.                           Each Byte within the 16 byte bit vector
  3792.                           will be numbered from 0 - F. (Most
  3793.                           significant byte first).
  3794.  
  3795.                           Byte 0   1   2   3   ...   F
  3796.                                XX  XX  XX  XX  ...   XX
  3797.  
  3798.                           The bits in each byte indicate whether an
  3799.                           even numbered SAP is enabled (b'1') or
  3800.                           disabled (b'0'). (Most significant bit first)
  3801.  
  3802.                           Bits 7   6   5   4   ...   0
  3803.                           SAP  0   2   4   6   ...   E
  3804.  
  3805.                           By combining the byte label with the enabled
  3806.                           bits, all supported SAPs can be determined.
  3807.  
  3808.  
  3809.  
  3810. Wells & Bartky                                                 [Page 68]
  3811.  
  3812. RFC 1795                  Data Link Switching                 April 1995
  3813.  
  3814.  
  3815.                           In the following diagram, 'n' would equal 0
  3816.                           through F depending on which byte was being
  3817.                           interpreted.
  3818.  
  3819.                           Bit ordering is shown below with bit
  3820.                           7 being the most significant bit and bit
  3821.                           0 the least significant bit.
  3822.  
  3823.                           7654 3210
  3824.                           bbbb bbbb....
  3825.                           |||| ||||
  3826.                           |||| |||SAP 0xnE enabled or not
  3827.                           |||| |||
  3828.                           |||| ||SAP 0xnC enabled or not
  3829.                           |||| ||
  3830.                           |||| |SAP 0xnA enabled or not
  3831.                           |||| |
  3832.                           |||| SAP 0xn8 enabled or not
  3833.                           ||||
  3834.                           |||SAP 0xn6 enabled or not
  3835.                           |||
  3836.                           ||SAP 0xn4 enabled or not
  3837.                           ||
  3838.                           |SAP 0xn2 enabled or not
  3839.                           |
  3840.                           SAP 0xn0 enabled or not
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866. Wells & Bartky                                                 [Page 69]
  3867.  
  3868. RFC 1795                  Data Link Switching                 April 1995
  3869.  
  3870.  
  3871.    An example of using all User Definable SAPs of 0x04 to 0xEC for SNA
  3872.    Data Link Switching and SAP 0xF0 for NetBIOS Data Link Switching
  3873.    would be as follows:
  3874.  
  3875.    Offset  SAPs          Binary       Hex
  3876.  
  3877.    0       4,8,C         0010 1010    0x2A
  3878.    1       10,14,18,1C   1010 1010    0xAA
  3879.    2       20,24,28,2C   1010 1010    0xAA
  3880.    3       30,34,38,3C   1010 1010    0xAA
  3881.    4       40,44,48,4C   1010 1010    0xAA
  3882.    5       50,54,58,5C   1010 1010    0xAA
  3883.    6       60,64,68,6C   1010 1010    0xAA
  3884.    7       70,74,78,7C   1010 1010    0xAA
  3885.    8       80,84,88,8C   1010 1010    0xAA
  3886.    9       90,94,98,9C   1010 1010    0xAA
  3887.    A       A0,A4,A8,AC   1010 1010    0xAA
  3888.    B       B0,B4,B8,BC   1010 1010    0xAA
  3889.    C       C0,C4,C8,CC   1010 1010    0xAA
  3890.    D       D0,D4,D8,DC   1010 1010    0xAA
  3891.    E       E0,E4,E8,EC   1010 1010    0xAA
  3892.    F       F0            1000 0000    0x80
  3893.  
  3894. 7.6.7  TCP Connections (0x87) Control Vector
  3895.  
  3896.    The TCP Connections control vector indicates the support of an
  3897.    alternate number of TCP Connections for the Data Link Switching
  3898.    traffic.  The base implementation of Data Link Switching supports two
  3899.    TCP Connections, one for each direction of data traffic.
  3900.  
  3901.    This control vector is optional.  If it is omitted in a DLSw
  3902.    Capabilities Exchange, then two TCP Connections are assumed.  It is
  3903.    further assumed that if a Data Link  Switch can support one TCP
  3904.    Connection, it can support two TCP Connections.
  3905.  
  3906.    If TCP Connections CV values agree and the number of connections is
  3907.    one, then the  DLSw with the higher IP address must tear down the TCP
  3908.    connections on its local port 2065.
  3909.  
  3910.    The format of the TCP Connections Control Vector is shown below:
  3911.  
  3912.    Offset  Length  Value  Contents
  3913.    ------  ------  -----  --------
  3914.       0       1    0x03   Length of the TCP Connections structured
  3915.                           subfield
  3916.  
  3917.       1       1    0x87   key = 0x87  that identifies this as the
  3918.                           TCP Connections structured subfield
  3919.  
  3920.  
  3921.  
  3922. Wells & Bartky                                                 [Page 70]
  3923.  
  3924. RFC 1795                  Data Link Switching                 April 1995
  3925.  
  3926.  
  3927.       2       1           an indicator of the support for an
  3928.                           alternate number of TCP Connections by
  3929.                           the sending Data Link Switch.
  3930.                             0x01      the number of TCP Connections
  3931.                                       may be brought down to one
  3932.                                       after Capabilities Exchange
  3933.                                       is completed.
  3934.                             0x02      the number of TCP Connections
  3935.                                       will remain at two for
  3936.                                       the duration of the DLSw
  3937.                                       connection.
  3938.  
  3939. 7.6.8  NetBIOS Name Exclusivity (0x88) Control Vector
  3940.  
  3941.    The NetBIOS Name Exclusivity control vector identifies how the
  3942.    NetBIOS Name List control vector data is to be interpreted.
  3943.    Specifically, this control vector identifies whether the NetBIOS
  3944.    Names in the NetBIOS Name List control vectors are the only ones
  3945.    accessible via the sending Data Link Switch.
  3946.  
  3947.    If a NetBIOS Name List control vector is specified and the NetBIOS
  3948.    Name Exclusivity control vector is missing, then the NetBIOS Names
  3949.    are not assumed to be the only  ones accessible via this switch.
  3950.  
  3951.    A node may specify that it supports no local NetBIOS names by
  3952.    including in its  capabilities the NetBIOS Name List Exclusivity CV
  3953.    (with byte 2 == 0x01), and not including any instances of the NetBIOS
  3954.    Name List CV.
  3955.  
  3956.    Offset  Length  Value  Contents
  3957.    ------  ------  -----  --------
  3958.       0       1    0x03   Length of the Exclusivity structured
  3959.                           subfield
  3960.  
  3961.       1       1    0x88   key = 0x88 that identifies this as the
  3962.                           NetBIOS Name Exclusivity structured
  3963.                           subfield
  3964.  
  3965.       2       1           an indicator of the relationship of the
  3966.                           NetBIOS Names to the sending Data Link
  3967.                           Switch.
  3968.                             0x00     the NetBIOS Names specified in
  3969.                                      this Capabilities Exchange
  3970.                                      can be accessed via this
  3971.                                      switch but are not the
  3972.                                      exclusive set (i.e., other
  3973.                                      entities are accessible in
  3974.                                      addition to the ones specified)
  3975.  
  3976.  
  3977.  
  3978. Wells & Bartky                                                 [Page 71]
  3979.  
  3980. RFC 1795                  Data Link Switching                 April 1995
  3981.  
  3982.  
  3983.                             0x01     the NetBIOS Names specified in
  3984.                                      this Capabilities Exchange
  3985.                                      are the only ones accessible
  3986.                                      via this switch.
  3987.  
  3988. 7.6.9  MAC Address List (0x89) Control Vector
  3989.  
  3990.    The MAC Address List control vector identifies one or more MAC
  3991.    addresses that are accessible through the sending Data Link Switch.
  3992.    This control vector specifies a single MAC address value and MAC
  3993.    address mask value to identify the MAC address or range of MAC
  3994.    addresses.  MAC addresses and masks are in non-canonical (Token-Ring)
  3995.    format in this control vector.
  3996.  
  3997.    This control vector is optional and can be repeated if necessary.
  3998.  
  3999.    Note 1: If a particular MAC address, <mac-addr>, satisfies the
  4000.    following algorithm, then <mac-addr> is assumed to be accessible via
  4001.    the sending Data Link Switch:
  4002.  
  4003.    <mac-addr> & <mac-addr-mask> == <mac-addr-value>
  4004.  
  4005.    where:  <mac-addr-value> is the MAC Address
  4006.                             Value specified in
  4007.                             this control vector
  4008.  
  4009.            <mac-addr-mask>  is the MAC Address
  4010.                             Mask specified in
  4011.                             this control vector
  4012.  
  4013.    Note 2:  If an individual MAC Address is desired, then <mac-addr-
  4014.    value> should be the individual MAC address and <mac-addr-mask>
  4015.    should be 0xFFFFFFFFFFFF.
  4016.  
  4017.    Offset  Length  Value  Contents
  4018.    ------  ------  -----  --------
  4019.       0       1    0x0E   Length of the MAC Address List
  4020.                           structured subfield
  4021.  
  4022.       1       1    0x89   key = 0x89  that identifies this as the
  4023.                           MAC Address List structured subfield
  4024.  
  4025.      2-7      6           the 6-byte MAC Address Value,
  4026.                           <mac-addr-value> in the above formula
  4027.  
  4028.      8-13     6           the 6-byte MAC Address Mask,
  4029.                           <mac-addr-mask> in the above formula
  4030.  
  4031.  
  4032.  
  4033.  
  4034. Wells & Bartky                                                 [Page 72]
  4035.  
  4036. RFC 1795                  Data Link Switching                 April 1995
  4037.  
  4038.  
  4039. 7.6.10  NetBIOS Name List (0x8A) Control Vector
  4040.  
  4041.    The NetBIOS Name List control vector identifies one or more NetBIOS
  4042.    names that are accessible through the sending Data Link Switch.  This
  4043.    control vector specifies a single NetBIOS name in ASCII.  However,
  4044.    the NetBIOS name can consist of "don't care" and "wildcard"
  4045.    characters to match on a number of NetBIOS names.  If an individual
  4046.    character position in the NetBIOS name in this control vector
  4047.    contains a '?', then the corresponding character position in real
  4048.    NetBIOS name is a "don't care".  If a NetBIOS name in this control
  4049.    vector ends in '*', then the remainder of real NetBIOS names is a
  4050.    "don't care".  '*' is only considered a wildcard if it appears at the
  4051.    end of a name.
  4052.  
  4053.    All blanks or nulls at the end of NetBIOS names in this control
  4054.    vector are ignored.   NetBIOS names which have fewer than 16 bytes
  4055.    and which do not end with  '*' are not assumed to have a trailing
  4056.    '*'; the "wildcard" character must be explicit.
  4057.  
  4058.    NetBIOS group names can exist across several LANs/networks.  As such,
  4059.    NetBIOS  group names received in a NetBIOS Name List Control Vector
  4060.    can not be treated the same as NetBIOS individual names.  The
  4061.    Individual/Group Flag allows Data  Link Switches to distinguish
  4062.    between the two.
  4063.  
  4064.    This control vector is optional and can be repeated if necessary.
  4065.  
  4066.    Offset  Length  Value  Contents
  4067.    ------  ------  -----  --------
  4068.       0       1    0xn    Length of the NetBIOS Name List
  4069.                           structured subfield (maximum = 0x13)
  4070.  
  4071.       1       1    0x8A   key = 0x8A  that identifies this as the
  4072.                           NetBIOS Name List structured subfield
  4073.  
  4074.       2       1           Individual/Group Flag
  4075.                             0x00 - Individual NetBIOS Name
  4076.                             0x01 - Group NetBIOS Name
  4077.  
  4078.      3-n     n-3          the NetBIOS name with possible embedded
  4079.                           '?' and terminating '*'.
  4080.  
  4081. 7.6.11  Vendor Context (0x8B) Control Vector
  4082.  
  4083.    The Vendor Context control vector identifies the manufacturer's IEEE
  4084.    assigned Organizationally Unique Identifier (OUI) of the Data Link
  4085.    Switch sending the DLSw Capabilities Exchange.  The OUI is sent in
  4086.    non-canonical (Token-Ring) format.
  4087.  
  4088.  
  4089.  
  4090. Wells & Bartky                                                 [Page 73]
  4091.  
  4092. RFC 1795                  Data Link Switching                 April 1995
  4093.  
  4094.  
  4095.    This control vector is optional and is used to provide the context
  4096.    for any Vendor Specific control vectors that follow in the
  4097.    Capabilities Exchange.  If there are multiple instances of the Vendor
  4098.    Context control vector, the specified context remains in effect for
  4099.    all Vendor Specific control vectors until the next Vendor Context
  4100.    control vector is encountered.
  4101.  
  4102.       Offset  Length  Value  Contents
  4103.       ------  ------  -----  --------
  4104.          0       1    0x05   Length of the Vendor Context structured
  4105.                              subfield
  4106.  
  4107.          1       1    0x8B   key = 0x8B  that identifies this as the
  4108.                              Vendor Context structured subfield
  4109.  
  4110.         2-4      3           the 3-byte Organizationally Unique
  4111.                              Identifier (OUI) for the vendor
  4112.                              (non-canonical format)
  4113.  
  4114. 7.7  Capabilities Exchange Responses
  4115.  
  4116.    There are two kinds of DLSw Capabilities Exchange Responses: positive
  4117.    and negative.  A positive response is returned to the sending Data
  4118.    Link Switch if there were no errors encountered in the DLSw
  4119.    Capabilities Exchange Request.  A negative response is returned if
  4120.    there is at least one error encountered.
  4121.  
  4122.    A positive DLSw Capabilities Exchange Response has the following
  4123.    overall format:
  4124.  
  4125.    +----+----+
  4126.    | LL | ID |
  4127.    +----+----+
  4128.  
  4129.    0-1    Length, in binary, of the DLSw Capabilities
  4130.           Exchange Response GDS Variable.  The value of
  4131.           LL in this case is 0x0004.
  4132.  
  4133.    2-3    GDS Id: 0x1521
  4134.  
  4135.    A negative DLSw Capabilities Exchange Response has the following
  4136.    overall format:
  4137.  
  4138.    +----+----+--------+--------+
  4139.    | LL | ID | Offset | Reason |
  4140.    +----+----+--------+--------+
  4141.  
  4142.  
  4143.  
  4144.  
  4145.  
  4146. Wells & Bartky                                                 [Page 74]
  4147.  
  4148. RFC 1795                  Data Link Switching                 April 1995
  4149.  
  4150.  
  4151.    0-1    Length, in binary, of the DLSw Capabilities Exchange
  4152.           Response GDS Variable.  The value of LL is the sum of
  4153.           the length of all fields in the GDS Variable (i.e.,
  4154.           length of LL + length of ID + length of Offsets/Reasons).
  4155.  
  4156.    2-3    GDS Id: 0x1522
  4157.  
  4158.    4-5    Offset into the DLSw Capabilities Exchange Request of the
  4159.           error.  Offset should always point to the start of the
  4160.           GDS Variable or a specific control vector.
  4161.  
  4162.    6-7    Reason code that uniquely identifies the error.  Specific
  4163.           values for the reason code are:
  4164.  
  4165.             0x0001        invalid GDS length for a DLSw Capabilities
  4166.                           Exchange Request.  (The value of Offset
  4167.                           is ignored.)
  4168.  
  4169.             0x0002        invalid GDS id for a DLSw Capabilities
  4170.                           Exchange Request.  (The value of Offset
  4171.                           is ignored.)
  4172.  
  4173.             0x0003        Vendor Id control vector is missing.  (The
  4174.                           value of Offset is ignored.)
  4175.  
  4176.             0x0004        DLSw Version control vector is missing. (The
  4177.                           value of Offset is ignored.)
  4178.  
  4179.             0x0005        Initial Pacing Window control vector is
  4180.                           missing.  (The value of Offset is ignored.)
  4181.  
  4182.             0x0006        length of control vectors doesn't correlate
  4183.                           to the length of the GDS variable
  4184.  
  4185.             0x0007        invalid control vector id
  4186.  
  4187.             0x0008        length of control vector invalid
  4188.  
  4189.             0x0009        invalid control vector data value
  4190.  
  4191.             0x000A        duplicate control vector (for non-repeating
  4192.                           control vectors)
  4193.  
  4194.             0x000B        out-of-sequence control vector (for
  4195.                           repeating control vector)
  4196.  
  4197.             0x000C        DLSw Supported SAP List control vector is
  4198.                           missing.
  4199.  
  4200.  
  4201.  
  4202. Wells & Bartky                                                 [Page 75]
  4203.  
  4204. RFC 1795                  Data Link Switching                 April 1995
  4205.  
  4206.  
  4207.                           (The value of Offset is ignored.)
  4208.  
  4209.    Note:  Multiple Offset, Reason pairs can be returned with one pair
  4210.    for each error encountered.
  4211.  
  4212. 8.  Pacing/Flow Control
  4213.  
  4214.    This section describes the required Pacing and Flow Control
  4215.    mechanisms used by a Data Link Switch.
  4216.  
  4217.    While it is beyond the scope of this document to specify a policy for
  4218.    how an implementation maps SSP flow control to the native data link
  4219.    flow control at the edges, the following paragraphs describe a
  4220.    general philosophical overview of how the mechanism is to be applied.
  4221.  
  4222.    There are two types of flows which are covered by the flow control
  4223.    mechanism: connection-oriented and connectionless.  In the first,
  4224.    connection-oriented flows, the implementer is to map the native flow
  4225.    control mechanism of the two data links at the boundaries to the SSP
  4226.    flow control mechanism thus presenting an end-to-end flow control
  4227.    mechanism which "pushes back" all the way to the originating station
  4228.    in either direction.
  4229.  
  4230.    However, in the case of connectionless traffic, this is not possible
  4231.    at the data link level because there is no native flow control
  4232.    mechanism for connectionless data links.  At first glance it is
  4233.    tempting to allow connectionless traffic to flow the DLSw cloud
  4234.    unthrottled.  However, the rationale for subjecting these flows to
  4235.    flow control within the DLSw cloud is to "push" the discarding of
  4236.    frames (should this become necessary) back to the ingress of the DLSw
  4237.    cloud.  This "early discarding" of excessive DATAGRAMs should allow
  4238.    the cloud to remain deterministic without wasting network bandwidth.
  4239.  
  4240. 8.1  Basic Overview
  4241.  
  4242.    Each circuit consists of two data flows, one in each direction.  Each
  4243.    data flow has its own independent flow control mechanism.  For each
  4244.    data flow there is an entity that originates traffic, referred to as
  4245.    the sender, and a target entity which receives the traffic, referred
  4246.    to as the receiver.
  4247.  
  4248.    A sender may only send data when its receiver has granted explicit
  4249.    permission to send a discrete number of data units.  Data units are
  4250.    defined as either a DGRMFRAME or an INFOFRAME.
  4251.  
  4252.    The receiver grants permission to send data units by sending a Flow
  4253.    Control Indicator (FCIND- defined later).  The sender must
  4254.    acknowledge all FCINDs by sending a Flow Control Acknowledgment
  4255.  
  4256.  
  4257.  
  4258. Wells & Bartky                                                 [Page 76]
  4259.  
  4260. RFC 1795                  Data Link Switching                 April 1995
  4261.  
  4262.  
  4263.    (FCACK- defined later).
  4264.  
  4265.    A sending implementation must maintain these values:
  4266.  
  4267.    1. GrantedUnits - The number of units (frames) which the sender
  4268.       currently has permission to send.
  4269.  
  4270.    2. CurrentWindow - This is a discrete number of units, controlled by
  4271.       the receiver, which is basis for granting additional units.
  4272.  
  4273.    3. InitialWindowSize - Global for all circuits on a transport
  4274.       connection.  Learned in capabilities exchange when the transport
  4275.       connection is established.  It specifies an initial value for
  4276.       CurrentWindow when each circuit is established.
  4277.  
  4278.    A receiving implementation must maintain these values:
  4279.  
  4280.    1. CurrentWindow - This is a discrete number of units, controlled by
  4281.       the receiver, which is basis for granting additional units.
  4282.  
  4283.    2. InitialWindowSize - Global for all circuits on a transport
  4284.       connection.  Sent in capabilities exchange when the transport
  4285.       connection is established.  It specifies an initial value for
  4286.       CurrentWindow when each circuit is established.
  4287.  
  4288.    3. FCACKOwed - The sender owes an FCACK.  If true, no FCIND may be
  4289.       sent.
  4290.  
  4291. 8.2  Frame Format
  4292.  
  4293.    The Flow control Byte is contained at offset 15 in both the
  4294.    Information and Control SSP messages.  From a flow control
  4295.    perspective, the flow control information in the two frames are
  4296.    handled identically.
  4297.  
  4298.    The following diagram describes the format of the Flow Control Byte
  4299.    (Bit 7 is the most significant and Bit 0 is the Least significant bit
  4300.    of the octet):
  4301.  
  4302.       bit   7   6   5   4   3   2   1   0
  4303.           +---+---+---+---+---+---+---+---+
  4304.           |FCI|FCA| reserved  |    FCO    |
  4305.           +---+---+---+---+---+---+---+---+
  4306.  
  4307.       FCI : Flow Control Indicator
  4308.       FCA : Flow Control Ack
  4309.       FCO : Flow Control Operator Bits
  4310.  
  4311.  
  4312.  
  4313.  
  4314. Wells & Bartky                                                 [Page 77]
  4315.  
  4316. RFC 1795                  Data Link Switching                 April 1995
  4317.  
  4318.  
  4319.             000 - Repeat Window Operator
  4320.             001 - Increment Window Operator
  4321.             010 - Decrement Window Operator
  4322.             011 - Reset Window Operator
  4323.             100 - Halve Window Operator
  4324.             101 - Reserved
  4325.             110 - Reserved
  4326.             111 - Reserved
  4327.  
  4328.    A frame with the FCI bit set is referred to as a Flow Control
  4329.    Indication (FCIND).  An FCIND is used to manage the flow in the
  4330.    opposite direction of the frame which bears it.
  4331.  
  4332.    A frame with the FCA bit set is referred to as a Flow Control
  4333.    Acknowledgment (FCACK).  An FCACK is used to manage the flow in the
  4334.    same direction of the frame which bears it.
  4335.  
  4336.    NOTE:  A frame may be both a FCIND and an FCACK.
  4337.  
  4338.    A frame bearing an FCIND or FCACK may also contain data for the flow
  4339.    in the direction it is traveling.  In such a frame, the FCIND or
  4340.    FCACK are said to be piggy-backed.  A non-piggy-backed FCIND is
  4341.    called an Independent Flow Control Indication (IFCIND) and a non-
  4342.    piggy-backed FCACK is called an Independent Flow Control
  4343.    Acknowledgment (IFCACK). IFCIND and IFCACK messages are sent in a
  4344.    Independent Flow Control SSP message (type 0x21).
  4345.  
  4346.    NOTE:  A frame may be both an IFCIND and an IFCACK.
  4347.  
  4348.    It is desirable to carry information in control messages so as to
  4349.    reduce the need to send a flow control only message.  The diagram
  4350.    below shows the messages that may carry valid flow control
  4351.    information:
  4352.  
  4353.  ======                            ___                           ======
  4354.  |    |        ---------        __/   \__       ---------        |    |
  4355.  |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
  4356.  ======        |   |   |      <  Network  >     |   |   |        ======
  4357. /______\       ---------       \__     __/      ---------       /______\
  4358.  Origin       Origin DLSw         \___/        Target DLSw      Target
  4359.  Station        partner                          partner        Station
  4360.  
  4361.    May have valid
  4362.     FCI/FCA/FCO    Data carrying
  4363.  
  4364.          N             N          CANUREACH_cs
  4365.                                   ----------->
  4366.          Y*            N            ICANREACH_cs
  4367.  
  4368.  
  4369.  
  4370. Wells & Bartky                                                 [Page 78]
  4371.  
  4372. RFC 1795                  Data Link Switching                 April 1995
  4373.  
  4374.  
  4375.                                     <-----------
  4376.          Y             N          REACH_ACK
  4377.                                   ----------->
  4378.          Y             Y            XIDFRAMEs
  4379.                                   <------------>
  4380.          Y             Y            DGRMFRAMEs
  4381.                                   <------------>
  4382.          Y             N          CONTACT
  4383.                                   ----------->
  4384.          Y             N               CONTACTED
  4385.                                     <-----------
  4386.          Y             Y             INFOFRAMEs
  4387.                                   <------------>
  4388.          Y             N          RESTART_DL
  4389.                                   ----------->
  4390.          Y             N               DL_RESTARTED
  4391.                                     <-----------
  4392.          Y             N          CONTACT
  4393.                                   ----------->
  4394.          Y             N               CONTACTED
  4395.                                     <-----------
  4396.          N             N          HALT_DL
  4397.                                   ----------->
  4398.          N             N               DL_HALTED
  4399.                                     <-----------
  4400.  
  4401.    *Note: ICANREACH_cs cannot carry FCA, as there could not be an
  4402.    outstanding FCI.
  4403.  
  4404. 8.3  Granting Permission to Send Data
  4405.  
  4406.    A receiver grants a sender permission to send units of data by
  4407.    sending FCIND.  Each FCIND is further qualified by a flow control
  4408.    operator, which is encoded in the FCO bits of the FCIND header. With
  4409.    one exception (the Reset Window operator) all operators may be either
  4410.    piggy-backed or carried in a IFCIND.
  4411.  
  4412.    The five flow control operators are outlined below:
  4413.  
  4414. 8.3.1  Repeat Window Operator
  4415.  
  4416.    This operator is processed as follows:
  4417.  
  4418.            (CurrentWindow unchanged)
  4419.            GrantedUnits += CurrentWindow
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426. Wells & Bartky                                                 [Page 79]
  4427.  
  4428. RFC 1795                  Data Link Switching                 April 1995
  4429.  
  4430.  
  4431. 8.3.2  Increment Window Operator
  4432.  
  4433.    This operator is processed as follows:
  4434.  
  4435.            CurrentWindow++
  4436.            GrantedUnits += CurrentWindow
  4437.  
  4438. 8.3.3  Decrement Window Operator
  4439.  
  4440.    This operator is processed as follows:
  4441.  
  4442.            CurrentWindow--
  4443.            GrantedUnits += CurrentWindow
  4444.  
  4445.    NOTE:  This operator may only be sent if CurrentWindow is greater
  4446.    than one.
  4447.  
  4448. 8.3.4  Reset Window Operator
  4449.  
  4450.    This operator is processed as follows:
  4451.  
  4452.            CurrentWindow = 0;
  4453.            GrantedUnits  = 0;
  4454.  
  4455.    NOTE:  This operator may only flow on an independent pacing
  4456.    indication (may NOT be piggy-backed).
  4457.  
  4458.    NOTE:  After sending this operator, the only legal subsequent
  4459.    operator is Increment Window.
  4460.  
  4461. 8.3.5  Halve Window Operator
  4462.  
  4463.    This operator shall be processed as follows:
  4464.  
  4465.            IF CurrentWindow > 1 THEN
  4466.                CurrentWindow = CurrentWindow / 2
  4467.            ENDIF
  4468.            GrantedUnits += CurrentWindow
  4469.  
  4470.    Note:  The divide by two operation is an unsigned integer divide
  4471.    (round down) or bit shift right operation.
  4472.  
  4473. 8.4  Acknowledging a Flow Control Operator
  4474.  
  4475.    Each sender must acknowledge each FCIND with an FCACK which is
  4476.    piggy-backed on the next frame in the opposite direction in all cases
  4477.    except the Reset Window Operator.
  4478.  
  4479.  
  4480.  
  4481.  
  4482. Wells & Bartky                                                 [Page 80]
  4483.  
  4484. RFC 1795                  Data Link Switching                 April 1995
  4485.  
  4486.  
  4487.    The receiver may have no more than one unacknowledged FCIND
  4488.    outstanding at any time with one exception:  A Reset Window Operator
  4489.    may be sent while another FCIND is pending acknowledgment.
  4490.  
  4491.    NOTE: The FCI and FCO bits of the FCACK are used independently by the
  4492.    flow in the opposite direction
  4493.  
  4494. 8.4.1  Acknowledging a Reset Window Operator
  4495.  
  4496.    Since this operator revokes all previously granted units, the sender
  4497.    must acknowledge this FCIND using an IFCACK (Independent Flow Control
  4498.    Acknowledgment).  This is the only case where IFCACK is used.
  4499.  
  4500.    Should a sender receive a non-reset FCIND followed by a Reset Window
  4501.    FCIND before acknowledging the first, it only acknowledges the Reset
  4502.    Window.
  4503.  
  4504.    NOTE: The FCI and FCO bits on these frames are used independently by
  4505.    the flow in the opposite direction.
  4506.  
  4507. 8.5  Capabilities Exchange Initial Window Size
  4508.  
  4509.    When two nodes establish a transport connection, they engage in a
  4510.    capabilities exchange (this is a requirement).  Refer to the
  4511.    Capabilities Exchange section 7 for further details.  The two nodes
  4512.    are required to exchange the following parameter:
  4513.  
  4514.    InitialWindowSize -  This indicates to the partner what
  4515.                         the sending flow entity initializes
  4516.                         its CurrentWindow value to for each
  4517.                         multiplexed circuit subsequently
  4518.                         established on that transport
  4519.                         connection.  This value must be
  4520.                         non-zero.
  4521.  
  4522. 8.6  Circuit Startup
  4523.  
  4524.    Process as follows:
  4525.  
  4526.           CurrentWindow = InitialWindowSize
  4527.           GrantedUnits  = 0
  4528.  
  4529.    NOTE: The InitialWindow Size variable has a scope of one per DLSw
  4530.    transport connection, while CurrentWindow and Granted units are
  4531.    maintained on a per circuit basis.  At circuit startup, a sender may
  4532.    not send data units until the receiver grants explicit permission
  4533.    with an FCIND message.  This grant may be an independent FCIND
  4534.    message or the FCIND may be piggy-backed on any of the message types
  4535.  
  4536.  
  4537.  
  4538. Wells & Bartky                                                 [Page 81]
  4539.  
  4540. RFC 1795                  Data Link Switching                 April 1995
  4541.  
  4542.  
  4543.    listed in section 8.2.
  4544.  
  4545. 8.7  Example Receiving Implementations
  4546.  
  4547.    The following two examples illustrate receiving implementations of
  4548.    varying degrees of complexity.  These are not meant to be complete
  4549.    implementations but rather serve to illustrate the protocol.
  4550.  
  4551.    NOTE: The examples are independent of the buffering model ( buffers
  4552.    may be deterministicly or statistically committed)
  4553.  
  4554.    NOTE: The examples assume a process model where each event processes
  4555.    to completion without being preempted by another event.
  4556.  
  4557. 8.7.1  Fixed Pacing Example
  4558.  
  4559.    Consider the following variables, in addition to InitialWindowSize
  4560.    and CurrentWindow and FCACKOwed:
  4561.  
  4562.           GrantDelayed     - Boolean
  4563.           GrantedUnits     - Outstanding Units
  4564.  
  4565.    The following section describes how various events are processed in
  4566.    this example implementation:
  4567.  
  4568. 8.7.1.1  Circuit Startup
  4569.  
  4570.           CurrentWindow    = InitialWindowSize
  4571.           FCACKOwed        = FALSE
  4572.           GrantDelayed     = FALSE
  4573.           GrantedUnits     = 0
  4574.           Repeat Window Operator
  4575.  
  4576. 8.7.1.2  Check Buffers Available
  4577.  
  4578.    Can my implementation afford to grant CurrentWindow just now?
  4579.  
  4580. 8.7.1.3  Buffers Become Available
  4581.  
  4582.           IF Check Buffers Available THEN
  4583.              Send FCIND( Repeat Window)
  4584.              GrantDelayed = FALSE
  4585.           ELSE
  4586.              Wait on buffers to become available (LIFO)
  4587.           ENDIF
  4588.  
  4589.  
  4590.  
  4591.  
  4592.  
  4593.  
  4594. Wells & Bartky                                                 [Page 82]
  4595.  
  4596. RFC 1795                  Data Link Switching                 April 1995
  4597.  
  4598.  
  4599. 8.7.1.4  Repeat Window Operator
  4600.  
  4601.           IF Check Buffers Available THEN
  4602.               Send FCIND( Repeat Window)
  4603.           ELSE
  4604.              GrantDelayed = TRUE
  4605.              Wait on buffers to become available (FIFO)
  4606.           ENDIF
  4607.  
  4608. 8.7.1.5  Send FCIND( operator)
  4609.  
  4610.           GrantedUnits += CurrentWindow
  4611.           FCACKOwed     = TRUE
  4612.           Encode and Transmit FCIND piggybacked or as IFCIND
  4613.  
  4614. 8.7.1.6  A Frame Arrives from Sender
  4615.  
  4616.           GrantedUnits--;
  4617.           IF frame is FCACK THEN
  4618.              IF FCACKOwed THEN
  4619.                 FCACKOwed = FALSE
  4620.              ELSE
  4621.                 Protocol Violation
  4622.              ENDIF
  4623.           ENDIF
  4624.           IF NOT GrantDelayed THEN
  4625.              IF GrantedUnits <= CurrentWindow THEN
  4626.                  IF FCACKOwed THEN
  4627.                    Protocol Violation
  4628.                  ELSE
  4629.                    Repeat Window Operator
  4630.                  ENDIF
  4631.              ENDIF
  4632.           ENDIF
  4633.  
  4634. 8.7.2  Adaptive Pacing Example
  4635.  
  4636.    The following example illustrates a receiving implementation that
  4637.    adjusts the window size and granted units based on buffer
  4638.    availability and transport utilization.
  4639.  
  4640.    NOTE: This example ignores other factors which might compel the
  4641.    receiving implementation to adjust the window size (i.e., Outbound
  4642.    queue length, traffic priority, ...)
  4643.  
  4644.    Consider the following variables, in addition to InitialWindowSize,
  4645.    CurrentWindow and FCACKOwed:
  4646.  
  4647.  
  4648.  
  4649.  
  4650. Wells & Bartky                                                 [Page 83]
  4651.  
  4652. RFC 1795                  Data Link Switching                 April 1995
  4653.  
  4654.  
  4655.           GrantDelayed     - Boolean
  4656.           GrantedUnits     - Outstanding Units
  4657.  
  4658. 8.7.2.1  Circuit Startup
  4659.  
  4660.           CurrentWindow    = InitialWindowSize
  4661.           FCACK            = FALSE
  4662.           GrantDelayed     = FALSE
  4663.           GrantedUnits     = 0
  4664.           Repeat Window Operator
  4665.  
  4666. 8.7.2.2  Check Buffers Available ( X)
  4667.  
  4668.            Can my implementation afford to grant X units just now?
  4669.  
  4670. 8.7.2.3  Buffers Become Available
  4671.  
  4672.           IF Check Buffers Available THEN
  4673.              CurrentWindow--;
  4674.              Send FCIND( Decrement Window)
  4675.              GrantDelayed = FALSE
  4676.           ELSE
  4677.              Wait on buffers to become available (LIFO)
  4678.           ENDIF
  4679.  
  4680. 8.7.2.4  Repeat Window Operator
  4681.  
  4682.           IF Check Buffers Available (CurrentWindow) THEN
  4683.               Send FCIND( Repeat Window)
  4684.           ELSE
  4685.              GrantDelayed = TRUE
  4686.              Wait on buffers to become available (FIFO)
  4687.           ENDIF
  4688.  
  4689. 8.7.2.5  Increment Window Operator
  4690.  
  4691.           IF Check Buffers Available ( CurrentWindow + 1) THEN
  4692.               CurrentWindow++
  4693.               Send FCIND( Increment Window)
  4694.           ELSE
  4695.               Repeat Window Operator
  4696.           ENDIF
  4697.  
  4698. 8.7.2.6  Send FCIND( operator)
  4699.  
  4700.           FCACKOwed     = TRUE
  4701.           GrantedUnits += CurrentWindow
  4702.           Encode and Transmit FCIND piggybacked or as IFCIND
  4703.  
  4704.  
  4705.  
  4706. Wells & Bartky                                                 [Page 84]
  4707.  
  4708. RFC 1795                  Data Link Switching                 April 1995
  4709.  
  4710.  
  4711. 8.7.2.7  An FCACK Arrives from Sender
  4712.  
  4713.           GrantedUnits--;
  4714.           IF NOT FCACKOwed THEN
  4715.              Protocol Violation
  4716.           ENDIF
  4717.           FCACKOwed = FALSE;
  4718.           IF NOT GrantDelayed THEN
  4719.              IF GrantedUnits < CurrentWindow THEN
  4720.                  Increment Window Operator
  4721.              ELSE IF GrantedUnits == CurrentWindow THEN
  4722.                  Repeat Window Operator
  4723.              END
  4724.           ENDIF
  4725.  
  4726. 8.7.2.8  A Non-FCACK Frame Arrives from Sender
  4727.  
  4728.           GrantedUnits--;
  4729.           IF NOT GrantDelayed THEN
  4730.              IF FCACKOwed THEN
  4731.                 IF GrantedUnits < CurrentWindow THEN
  4732.                    Protocol Violation
  4733.                 END
  4734.              ELSE
  4735.                 IF GrantedUnits <= CurrentWindow THEN
  4736.                    Repeat Window Operator
  4737.                 ENDIF
  4738.              ENDIF
  4739.           ENDIF
  4740.  
  4741.  
  4742.  
  4743.  
  4744.  
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762. Wells & Bartky                                                 [Page 85]
  4763.  
  4764. RFC 1795                  Data Link Switching                 April 1995
  4765.  
  4766.  
  4767. 8.8  Adaptive Pacing Example Flow Diagrams
  4768.  
  4769. 8.8.1  Example Flows from the Above Implementation
  4770.  
  4771.    The following diagram illustrates the use of adaptive pacing (use of
  4772.    Halve Window, and Reset operation are shown in subsequent diagrams).
  4773.  
  4774.    -----SENDER-----                     ----RECEIVER----
  4775.    Granted   Window                     Window   Granted
  4776.      0         2   circuit established    2         0
  4777.      2         2   <-------- FCIND(Rpt)   2         2
  4778.      1         2   FCACK-------------->   2         1
  4779.      4         3   <-------- FCIND(Inc)   3         4
  4780.      3         3   FCACK-------------->   3         3
  4781.                           +- FCIND(Rpt)   3         6
  4782.      2         3   DATA---|----------->   3         5
  4783.      1         3   DATA---|----------->   3         4
  4784.      4         3   <------+
  4785.      3         3   FCACK-------------->   3         3
  4786.      6         3   <-------- FCIND(Rpt)   3         6
  4787.      5         3   FCACK-------------->   3         5
  4788.      4         3   DATA--------------->   3         4
  4789.      3         3   DATA--------------->   3         3
  4790.                           +- FCIND(Rpt)   3         6
  4791.      2         3   DATA---|----------->   3         5
  4792.      1         3   DATA---|----------->   3         4
  4793.      0         3   DATA---|----------->   3         3
  4794.      3         3   <------+
  4795.      2         3   FCACK-------------->   3         2
  4796.      6         4   <-------- FCIND(Inc)   4         6
  4797.      5         4   FCACK-------------->   4         5
  4798.      4         4   DATA--------------->   4         4
  4799.                                         Waiting on Buffer
  4800.                           +- FCIND(Dec)   3         7
  4801.      3         4   DATA---|----------->   3         6
  4802.      2         4   DATA---|----------->   3         5
  4803.      1         4   DATA---|----------->   3         4
  4804.      0         4   DATA---|----------->   3         3
  4805.      3         3   <------+
  4806.      2         3   FCACK-------------->   3         2
  4807.                                         Waiting on Buffer
  4808.                           +- FCIND(Dec)   2         4
  4809.      1         3   DATA---|----------->   2         3
  4810.      0         3   DATA---|----------->   2         2
  4811.      2         2   <------+
  4812.      1         2   FCACK-------------->   2         1
  4813.      4         3   <-------- FCIND(Inc)   3         4
  4814.      3         3   FCACK-------------->   3         3
  4815.  
  4816.  
  4817.  
  4818. Wells & Bartky                                                 [Page 86]
  4819.  
  4820. RFC 1795                  Data Link Switching                 April 1995
  4821.  
  4822.  
  4823.      6         3   <-------- FCIND(Rpt)   3         6
  4824.      5         3   FCACK-------------->   3         5
  4825.      4         3   DATA--------------->   3         4
  4826.      3         3   DATA--------------->   3         3
  4827.      6         3   <-------- FCIND(Rpt)   3         6
  4828.  
  4829. 8.8.2  Example Halve Window Flow
  4830.  
  4831.    The following flow illustrates the use of the Halve Window Operator:
  4832.  
  4833.       -----SENDER-----                     ----RECEIVER----
  4834.       Granted   Window                     Window   Granted
  4835.         0         2   circuit established    2         0
  4836.         2         2   <-------- FCIND(Rpt)   2         2
  4837.         1         2   FCACK-------------->   2         1
  4838.         4         3   <-------- FCIND(Inc)   3         4
  4839.         3         3   FCACK-------------->   3         3
  4840.                                              Resource Shortage
  4841.         2         3   DATA--------------->   1         2
  4842.         1         3   DATA--------------->   1         1
  4843.         0         3   DATA--------------->   1         0
  4844.         1         1   <-------- FCIND(Hlv)   1         1
  4845.         0         1   FCACK-------------->   1         0
  4846.  
  4847.    NOTE: The Halve Window Operator could have been sent before the
  4848.    granted units fell to zero.  The implementer may make a choice based
  4849.    on the severity of the condition.
  4850.  
  4851. 8.8.3  Example Reset Window Flows
  4852.  
  4853.    The following flow diagram illustrates the ResetWindow operation if
  4854.    the receiver has no FCIND outstanding.
  4855.  
  4856.    -----SENDER-----                     ----RECEIVER----
  4857.    Granted   Window                     Window   Granted
  4858.      0         2   circuit established    2         0
  4859.      2         2   <-------- FCIND(Rpt)   2         2
  4860.      1         2   FCACK-------------->   2         1
  4861.      4         3   <-------- FCIND(Inc)   3         4
  4862.      3         3   FCACK-------------->   3         3
  4863.                           +- FCIND(Rpt)   3         6
  4864.      2         3   DATA---|----------->   3         5
  4865.      1         3   DATA---|----------->   3         4
  4866.      4         3   <------+
  4867.      3         3   FCACK-------------->   3         3
  4868.      6         3   <-------- FCIND(Rpt)   3         6
  4869.      5         3   FCACK-------------->   3         5
  4870.                                           Resource shortage!
  4871.  
  4872.  
  4873.  
  4874. Wells & Bartky                                                 [Page 87]
  4875.  
  4876. RFC 1795                  Data Link Switching                 April 1995
  4877.  
  4878.  
  4879.      0         0   <-------- FCIND(Rst)   0         5 (note still
  4880.    committed)
  4881.      0         0   IFCACK------------->   0         0
  4882.                                           Condition eases
  4883.      1         1   <-------- FCIND(Inc)   1         1
  4884.      0         1   FCACK-------------->   1         0
  4885.      2         2   <-------- FCIND(Inc)   2         2
  4886.      1         2   FCACK-------------->   3         4
  4887.  
  4888.    The next two flows  illustrate the Reset Window operation if the
  4889.    receiver has an outstanding FCIND.
  4890.  
  4891.    -----SENDER-----                     ----RECEIVER----
  4892.    Granted   Window                     Window   Granted
  4893.      0         2   circuit established    2         0
  4894.      2         2   <-------- FCIND(Rpt)   2         2
  4895.      1         2   FCACK-------------->   2         1
  4896.      4         3   <-------- FCIND(Inc)   3         4
  4897.      3         3   FCACK-------------->   3         3
  4898.                           +- FCIND(Rpt)   3         6
  4899.      2         3   DATA---|----------->   3         5
  4900.                           |               Resource shortage!
  4901.                           |+-FCIND(Rst)   0         5
  4902.      1         3   DATA---||---------->   0         4
  4903.      4         3   <------+|
  4904.      3         3   FCACK---+---------->   0         3 (Not IFCACK!)
  4905.      2         3   DATA----|---------->   0         2
  4906.      0         0   <-------+
  4907.      0         0   IFCACK------------->   0         0
  4908.                                           Condition eases
  4909.      1         1   <-------- FCIND(Inc)   1         1
  4910.      0         1   FCACK-------------->   1         0
  4911.      2         2   <-------- FCIND(Inc)   2         2
  4912.      1         2   FCACK-------------->   3         4
  4913.  
  4914.    -----SENDER-----                     ----RECEIVER----
  4915.    Granted   Window                     Window   Granted
  4916.      0         2   circuit established    2         0
  4917.      2         2   <-------- FCIND(Rpt)   2         2
  4918.      1         2   FCACK-------------->   2         1
  4919.      4         3   <-------- FCIND(Inc)   3         4
  4920.      3         3   FCACK-------------->   3         3
  4921.                           +- FCIND(Rpt)   3         6
  4922.      2         3   DATA---|----------->   3         5
  4923.                           |               Resource shortage!
  4924.                           |+-FCIND(Rst)   0         5
  4925.      1         3   DATA---||---------->   0         4
  4926.      4         3   <------+|
  4927.  
  4928.  
  4929.  
  4930. Wells & Bartky                                                 [Page 88]
  4931.  
  4932. RFC 1795                  Data Link Switching                 April 1995
  4933.  
  4934.  
  4935.      0         0   <-------+
  4936.      0         0   IFCACK------------->   0         0
  4937.                                           Condition eases
  4938.      1         1   <-------- FCIND(Inc)   1         1
  4939.      0         1   FCACK-------------->   1         0
  4940.      2         2   <-------- FCIND(Inc)   2         2
  4941.      1         2   FCACK-------------->   3         4
  4942.  
  4943. 8.9  Other Considerations
  4944.  
  4945. 8.9.1  Protocol Violations
  4946.  
  4947.    The following events are considered protocol violations:
  4948.  
  4949.    1. Sender exceeds granted units or does not acknowledge FCIND on
  4950.       first frame after its receipt (the receiver can not discern the
  4951.       difference between the two).
  4952.  
  4953.    2. Receiver does not follow a Reset Window Operator with an Increment
  4954.       Window Operator.
  4955.  
  4956.    3. Receiver has two unacknowledged FCINDs ( other than Reset Window)
  4957.       outstanding.
  4958.  
  4959.    4. Receiver sends Decrement Window Operator with a window size of one.
  4960.  
  4961.    5. Receiver attempts to increment the window size beyond 0xFFFF.
  4962.  
  4963.    Actions taken in response to protocol violations are left to the
  4964.    implementation of the node which discovers the violation.  If an
  4965.    implementation chooses to take down the circuit on which the
  4966.    violation occurred, HALT_DL is the appropriate action.
  4967.  
  4968. Acknowledgments
  4969.  
  4970.    Original RFC 1434 Authors:
  4971.  
  4972.       Roy C. Dixon, IBM
  4973.       David M. Kushi, IBM
  4974.  
  4975.    Chair of APPN Implementers Workshop Data Link Switching Related
  4976.    Interest Group:
  4977.  
  4978.       Louise Herndon Wells, Internetworking Technology Institute
  4979.  
  4980.  
  4981.  
  4982.  
  4983.  
  4984.  
  4985.  
  4986. Wells & Bartky                                                 [Page 89]
  4987.  
  4988. RFC 1795                  Data Link Switching                 April 1995
  4989.  
  4990.  
  4991.    Working Group Chairs (and significant contributors to this document):
  4992.  
  4993.       Connect/Disconnect (State Machines): Steve Klein, IBM
  4994.       Capabilities Exchange: Wayne Clark, Cisco Systems
  4995.       Flow Control (Adaptive Pacing): Shannon Nix, Metaplex
  4996.       Priority/Class of Service: Gene Cox, IBM
  4997.  
  4998.    Other significant contributors:
  4999.  
  5000.       Peter Gayek, IBM
  5001.       Paul Brittain, Data Connection Limited
  5002.  
  5003. References
  5004.  
  5005.    1) ISO 8802-2/IEEE Std 802.2 International Standard, Information
  5006.       Processing Systems, Local Area Networks, Part 2: Logical Link
  5007.       Control, December 31, 1989.
  5008.  
  5009.    2) IBM LAN Technical Reference IEEE 802.2 and NETBIOS Application
  5010.       Program Interfaces SC30-3587-00, December 1993.
  5011.  
  5012.    3) ISO/IEC DIS 10038 DAM 2, MAC Bridging, Source Routing Supplement,
  5013.       December 1991.
  5014.  
  5015.    4) ISO 8802-2/IEEE Std 802.1D International Standard, Information
  5016.       Processing Systems, Local Area Networks, Part 2: MAC layer
  5017.       Bridging.
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042. Wells & Bartky                                                 [Page 90]
  5043.  
  5044. RFC 1795                  Data Link Switching                 April 1995
  5045.  
  5046.  
  5047. Security Considerations
  5048.  
  5049.    Security issues are not discussed in this memo.
  5050.  
  5051. Chair's Address
  5052.  
  5053.    Louise Wells
  5054.    Internetwork Technology Institute
  5055.    2021 Stratford Dr.
  5056.    Milpitas, CA  95035
  5057.  
  5058.    EMail: lhwells@cup.portal.com
  5059.  
  5060. Editor's Address
  5061.  
  5062.    Alan K. Bartky
  5063.    Manager of Technology
  5064.    Sync Research Inc.
  5065.    7 Studebaker
  5066.    Irvine, CA 91728-2013
  5067.  
  5068.    Phone: 1-714-588-2070
  5069.    EMail: alan@sync.com
  5070.  
  5071.  
  5072.    Note: Any questions or comments relative to the contents of this RFC
  5073.    should be sent to the following Internet address:
  5074.    aiw-dlsw@networking.raleigh.ibm.com.
  5075.  
  5076.    This address will be used to coordinate the handling of responses.
  5077.  
  5078.    NOTE 1:  This is a widely subscribed mailing list and messages sent to
  5079.             this address will be sent to all members of the DLSw mailing
  5080.             list.  For specific questions relating to subscribing to the
  5081.             AIW and any of it's working groups send email to:
  5082.             appn@vnet.ibm.com
  5083.  
  5084.             Information regarding all of the AIW working groups and the
  5085.             work they are producing can be obtained by copying, via
  5086.             anonymous ftp, the file aiwinfo.psbin or aiwinfo.txt from the
  5087.             Internet host networking.raleigh.ibm.com, located in
  5088.             directory aiw.
  5089.  
  5090.    NOTE 2: These mailing lists and addresses are subject to change.
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098. Wells & Bartky                                                 [Page 91]
  5099.  
  5100.